区块链是什么,如何简单易懂地介绍区块链?

 

-----正文-----

 

事情是这样的,最近我的室友Hasaki一直在问我区块链和比特币的事情,我尝试了很多种不通的姿势以求简单通俗形象生动地跟他解释什么是区块链技术,但是最后都失败了。因此我萌生了要写一篇BlockChain for Babies(又名:如何向你的弱智室友解释区块链)的想法,以求能简单直观生动形象地向对区块链技术不了解但是想知道区块链是什么的人介绍区块链技术或者比特币。

 

因为面向的读者是不想知道具体技术实现只想了解区块链的人群,因此本文避开了一些底层和算法细节,采用比较主观的方式来展示笔者对区块链技术的感性认识。如果你只是对区块链感兴趣,并没有深入学习的打算,或者只是想像我一样在别人问起来的时候装逼,本文应该是一篇很好的“导论”。

 

总览

 

区块链本质上是一个去中心化的分布式账本数据库(感谢

@程剑宇

指出:在与比特币相关的区块链应用中可使用这一术语,但区块链技术可能并不包含“账本”)。其本身是一串使用密码学相关联所产生的数据块,每一个数据块中包含了多次比特币网络交易有效确认的信息。

 

这是区块链的定义,因此要逐步了解区块链,我们需要一步步了解如下东西。

 

去中心化

 

先来考虑一个中心化集中式处理的过程。你要在某宝上买一部手机,交易流程是:你将钱打给支付宝-支付宝收款后通知卖家发货-卖家发货-你确认收货-支付宝把钱打给卖家。

 

在这个过程中,虽然你是在和卖家交易,但是这笔交易还牵扯到了除了你和卖家的第三方,即支付宝,你和卖家的交易都是围绕支付宝展开。因此,如果支付宝系统出了问题便会造成这笔交易的失败。并且虽然你只是简单的买了一个手机,但是你和卖家都要向第三方提供多余的信息。因此考虑极端情况,如果支付宝跑路了或者是拿了钱不却不承认你的交易或者是支付宝所在的城市因为开G20把所有人都赶走了(?),那么你就悲剧了。

 

而去中心化的处理方式就要显得简单很多,你只需要和卖家交换钱和手机,然后双方都声称完成了这笔交易,就OK了。

 

可以看出在某些特定情况下,去中心化的处理方式会更便捷,同时也无须担心自己的与交易无关的信息泄漏。

 

其实如果只考虑两个人的交易并不能把去中心化的好处完全展示出来,设想如果有成千上万笔交易在进行,去中心化的处理方式会节约很多资源,使得整个交易自主化、简单化,并且排除了被中心化代理控制的风险。

 

去中心化是区块链技术的颠覆性特点,它无需中心化代理,实现了一种点对点的直接交互,使得高效率、大规模、无中心化代理的信息交互方式成为了现实。

 

当然,上述的例子有一个很大的潜在问题:没有了权威的中心化代理,怎样保证每笔交易的准确性和有效性呢?比如:如果没有了权威的中心化代理,张三某一天借了我100块钱,但是不还钱还不承认怎么办?这里就引出了区块链的其它特性。

 

两个基础难题

 

在去中心化以后,整个系统中没有了权威的中心化代理,信息的可信度和准确性便会面临问题。

 

问题1:类两军问题

 

第一次听说这个问题居然是在TCP的课上,大致说的是有两个相距很远的军队要传递信息,红军派遣一个信使去跟蓝军说:“你他娘的把意大利炮拿出来!”。蓝军收到信息后又派了一个信使去红军说:“收到指令!”。然后红军又派一个信使去蓝军说:“知道你收到指令了!”。然后蓝军又派一个信使去红军说:“知道你知道我收到指令了!”。然后红军又派一个信使去蓝军说:“知道你知道我知道你收到指令了!”……然后就没完没了了。

 

2:在分布式计算中在异步系统和不可靠的通道上达到一致性是不可能的

 

在这种情况下,因为是点对点的通信,双方不可能在这种情况下达到信息的一致性。严谨一点,就是“在分布式计算上,试图在异步系统和不可靠的通道上达到一致性是不可能的”。

 

问题2:拜占庭将军问题

 

拜占庭罗马帝国在军事行动中,采取将军投票的策略来决定是进攻还是撤退,也就是说如果多数人决定进攻,就上去干。但是军队中如果有奸细(比如将军已经反水故意乱投票,或者传令官叛变擅自修改军令),那怎么保证最后投票的结果真正反映了忠诚的将军的意愿呢?

 

拜占庭将军问题反映到信息交换领域中来,可以理解为在一个去中心的系统中,有一些节点是坏掉的,它们可能向外界广播错误的信息或者不广播信息,在这种情况下如何验证数据传输的准确性。

 

区块链技术的诞生

 

现在让我们来一步一步在去中心化的系统中解决这些问题,见证区块链技术雏形的诞生。

 

1

我们先来建立一个去中心化的系统,为了方便理解,我们来看一个简单的去中心化借贷模型:如果A借了B 100块钱,这个时候,A在人群中大喊“我是A,我借给了B 100块钱!”,B也在人群中大喊“我是BA借给了我100块钱!”,此时路人甲乙丙丁都听到了这些消息,因此所有人都在心中默默记下了“A借给了B100块钱”。你看,这个时候一个去中心化的系统就建立起来了,这个系统中不需要银行,也不需要借贷协议和收据,严格来说,甚至不需要人与人长久的信任关系(比如B突然又改口说“我不欠A钱!”,这个时候人民群众就会站出来说“不对,我的小本本上记录了你某天借了A100块钱!”)。

 

2

可能你已经发现了,在上述的模型中,所谓的“100块钱”已经不重要了。换句话说,任何东西都可以在这个模型中交换,甚至你可以凭空杜撰一个东西,只要大家承认,你就可以让你杜撰的东西流通。比如:我在人群中高喊一声“我创造了10个查克拉!”,我甚至不需要知道查克拉是什么,也不需要关心世界上是不是真的有查克拉,只要大家都听到,然后在自己的小本本上记下“LaiW3n10个查克拉”,于是我就真的有100个查克拉了。从此以后,我便可以声称我给了某人1个查克拉,只要路人甲乙丙丁都收到并且承认了这一信息,那我就算完成了这次交易,哪怕世界上没有查克拉。

 

你现在脑海中是不是浮现出了三个字——“比特币”?由于真正的区块链和比特币比我上述的模型复杂太多,细节也丰富太多,因此以下还是以查克拉举例,毕竟本文是Blockchain for Babies.(笑)

 

3

假设过了很长一段时间,我凭空创造的查克拉已经在这个系统中流通了起来,大家都开始认可了查克拉。但是这个系统中一共就只有10个查克拉,于是有人动了坏心思,他在人群中高呼“我有10个查克拉!”怎么办?大家是直接在本本上记下他有10个查克拉么,这样不是人人都可以伪造查克拉了么?

 

为了防止这种现象发生,我决定在我创造查克拉的时候给我的查克拉打上标记(更准确地说,我是给我喊的那句“我创造了10个查克拉”打上标记,比如标记为001),这样以后在每一笔交易的时候,我在高喊“我给了某某1个查克拉!”的时候,会附加上额外的一句话:“这1个查克拉的来源是记为001的那条记录,我的这句话标记为002!”。我们再抽象一点,某人喊话的内容的格式就变成了:“这句话编号xxx,上一句话的编号是yyy,我给了某某1个查克拉!”,这样就解决了伪造的问题。其实上述模型就变成一个简化的中本聪第一版比特币区块链协议:

 

4:查克拉模型和中本聪第一版区块链协议对比图

 

好了,看到这里你基本已经能够生动形象又不涉及任何细节地向你的弱智室友解释区块链了。但是也许你的室友是一个有打破沙锅问到底精神求是学子,因此你最好继续准好回答以下这几个问题。

 

1. “凭啥?”

 

你室友可能会问:“凭啥你喊一句话我就帮你记?我的小本本不要钱么?”。为了激励大家帮我传话和记账,我决定给第一个听到我喊话并且记录在小本本上的人一些奖励:第一个听到我喊话并记录下来的人,你就凭空得到了1个查克拉,这个查克拉是整个系统对你幸苦记账的报酬,而你记录了这句话之后,要马上告诉其它人你已经记录好了,让别人放弃继续记录这句话,并给你自己的记录编号让别人有据可查,然后你再把我的话加上你的记录编号一起喊出来,供下一个人记账。

 

当这个规则定下以后,这个系统中一定会出现一批人,他们开始竖着耳朵监听周围发出的声音,以抢占第一个记账的权利。对的,你脑海中是不是又浮现出了“比特币挖矿”的字眼?

 

值得一提的是,关于比特币挖矿,

@玲珑邪僧

举了一个很形象的例子:

单身汪们要找女票,国民岳母说我有好多女儿,这样吧我给你们出点题目,解出一个就给其中一个姑娘的微信号。

 

单身汪们疯狂竞争,想破脑袋去解题。只要其中一只汪解出一道题,就立马得意洋洋地昭告天下,示威全部单身汪,这个姑娘是我的啦,你们放弃吧。其他单身汪们即使不服也没有办法,惆怅懊恼也不是个事儿啊,还是麻溜地立马去解下一道题目吧。这只喜赢姑娘的幸运小汪被岳母认可后还能得到25个货币单位的彩礼,简直人生赢家。

 

2. “听谁的?”

 

在这个系统中,如果我和另一个人C几乎同时地喊出一句:“为了艾泽拉斯!”。由于听众所处的位置不同,一定会有人先听到我说的那句话,而另外一些人则先听到C的那句话,如果我们规定只能有一个人说出这句话,那到底这句话是谁说的?

 

如果不加任何条件,那么上述的情况一定会这样发展:一部分人认为这句话是我说的,在听到这句话之后开始记账,之后他们所做的所有事情都是基于这个事实,并且随着这个信息一次次的传下去,这条信息链会越来越深;而另外一群认为是C先说这句话的人,也会按照这样的趋势发展。这样,原本是一条唯一的信息链,在我们喊出“为了艾泽拉斯”这句话之后,分叉了!?

 

5:“区块链”分叉

 

这会导致怎样的情况呢?按照我们的设想,应该每个人的小本本上记录的东西都是一样的,都是一条可以把所有信息串联起来的链条。但是在这一刻,他们小本本上记录的东西不一样了!这还玩毛啊?以后还怎么确定交易和信息的真实性!?

 

为了解决这个问题,我又追加了新的规则:每个人在记录小本本的时候,需要脱鞋然后用脚拿笔,在小本本上用正楷体书写!有了这个规定,由于用脚写字难度很大,每个人至少需要10分钟才能写完,而且由于每个人用脚写字的熟练度不通,写完这句话所用的时间也不同,因此一定会有人先写完然后高呼“我写完了!那句话是LaiW3n喊的!”,这样其它正在写这句话的人便会停笔,然后在小本本上重新开始写“那句话是来文写的,上一句的编号是xxx”。

 

如果你对上述我的解决方法感兴趣,你可以对照我上面的比喻去了解以下知识:

 

“听谁的”——中本聪破解“拜占庭将军问题”的算法

“在小本本上记录”——比特币挖矿

“脱鞋用脚写字”——比特币挖矿难度

“脱鞋写字速度”——算力

“新的规则”——工作量证明链

 

3. “双花”问题

 

这个时候你的室友可能又要问:如果我同时宣布我给了A一个查克拉和我给了B一个查克拉,但是我只有一个查克拉,那咋整?是AB都收到了查克拉还是咋地?

 

这个时候你只需要托起他的下巴,温柔地看着他的眼睛,用手刮刮他的鼻子,说:“小妖精,你把这种情况带到上面的规则中去试试?”

 

--------------

 

一些私信问题讨论:

 

1. 为何目前还鲜有区块链和实体商业业务对接的案例?

 

从理论上:区块链是一门新技术,保守大众(包括我)还处在观望阶段,只有少数激进或者目标明确的实体开始向区块链进军,而这些少数的实体在现阶段发声的强度还不够。

 

从应用上:区块链技术要与实体商业对接,在技术和规则上还需要进一步开拓,区块链解决的所谓“不信任”问题其对象也只局限于区块链上的数据。因此如果区块链要与实体业务对接,还需要进一步推动实体与数据之间跨域的“游戏规则”的建立。

 

2. 虚拟加密货币最终是否会走向庞氏骗局?

 

这个问题我也不太好回答,毕竟我是一个技术人员而非这个领域的弄潮儿。我个人的看法是:对于普通人,不建议长期持有某种数字货币,应将数字货币作为法币之间转换的桥梁;对于投机者,“炒币”需谨慎,应将风险控制在自己能够承受的范围内。PS:其实我真的不关心这个问题。

 

3. 为什么听你一讲,感觉区块链很弱智的样子?

 

我在文中已经说明,这只是一篇关于区块链技术的新人导论,其目的在于帮助你快速对区块链有一个感性的认识;如果真的想了解区块链技术细节,请阅读相关文献或访问区块链社区。

 

首先要搞清一个问题——比特币是区块链,但是区块链并不是比特币。

 

于是,在区块链的这个问题回答里,提到“矿工”,“挖矿”,“最长链”,“分叉”等等词的,其实都不准确。

 

写一点上个月讲课的内容——个人觉得大部分的回答,包括google搜出来的或者wiki的,都不能很好地解释区块链是个什么东西。因为讲比特币的人很多,懂比特币的人也很多,但是具体到区块链,现在并没有一个很清楚的定义说什么是区块链,基本上所有的介绍里都是这样的:

 

比特币——〉区块链是比特币的底层技术。

 

或者

 

比特币——〉比特币是一种区块链。

 

具体到什么是区块链的问题,目前没有看到很好的定义和介绍,更多的是大而化之地讲区块链的意义在哪里的空泛文章,要不然就是一水的矿工和挖矿。所以我来从纯理论角度说一下我个人对区块链的定义:

 

1,区块链是一个放在非安全环境中的分布式数据库(系统)。

 

2,区块链采用密码学的方法来保证已有数据不可能被篡改。

 

3,区块链采用共识算法来对于新增数据达成共识。

 

具有以上三个性质的系统,就是区块链。

 

1,区块链是一个放在非安全环境中的分布式数据库(系统)。

 

这里的要点有两个:(1)分布式,(2)非安全环境。

 

首先,这是一个分布式的,去中心化的系统。所以,有一个中心服务器或者节点的,不是区块链。节点都是安全的,无恶意的,那这不是区块链。同理,从应用的角度讲,如果你的应用必须要使用中心节点(例如要用超级计算机做深度学习)或者没必要考虑节点不安全的情况(例如某个安全的工厂里的传感器),那么并不需要考虑区块链技术。

 

至于后面的词“数据库”,目前大部分成熟的区块链都是数据库,例如比特币就是一个分布式账本,而账本其实就是数据。然后,根据数据的格式,又可以分三种——1,数据是完全不相关的,只是达成的共识,没有有效无效之分;2,数据有某些逻辑结构,例如账本中,一笔交易实际上除了金额,还有输入和输出,连接到之前的交易,这些数据需要通过逻辑验证(例如交易中,节点需要验证输入的交易是否有效);3,数据拥有图灵完备的逻辑,而验证的时候需要通过节点使用算力运算,每笔交易可以有不同的输出和状态,每个节点要做的不仅仅是验证交易的真实性和输入的正确性,还要根据交易里的逻辑读入数值,进行验算然后再验证结果。

 

比特币的系统就是第二种,又叫分布式账本;以太坊是第三种。第三种可以支持智能合约。

 

用比特币举例的话,1,它是一个完全去中心化的系统,2,它放在一个非安全的环境,它并不要求所有使用比特币的人都没有恶意。

 

2,区块链采用密码学的方法来保证已有数据不可能被篡改。

 

这个是误解最多的部分,因为很多人一提到区块链就只觉得是这个。诚然,这部分很重要,而且确实区块链也因此得名,但这只是区块链的定义的一部分。

 

这个部分的两个核心要点是:(1)密码学哈希函数,(2)非对称加密。

 

两个都是密码学的基础概念,网上都有非常清晰的定义,我只简单说下:

 

(密码学)哈希函数:一个函数Y=H(X),有如下性质:1,有X可以很容易算出Y2,有Y不可能算出X3,有Y不可能找到另一个X'使得H(X')=Y3.5,如果XX'相差很小,H(X)H(X')则完全不相关。

 

这东西主要用于验证信息完整性——在一个信息后面放上这个信息的哈希值,这个值很小,例如256bit,而且计算方便。收到信息之后收信人再算一遍哈希值,对比两者就知道这条信息是否被篡改过了。如果被篡改过,哪怕只有一bit,整个哈希值也会截然不同。而根据哈希函数的性质,没有人能够伪造出另一个消息具有同样的哈希值,也就是说篡改过的数据完全不可能通过哈希校验。

 

非对称加密:这东西很好理解——对称加密就是有个密钥,可以理解成保险箱钥匙,你把消息加密变成密文,没有人能看懂这是啥,然后同一把钥匙解密成原来的消息。

 

非对称加密就是有两把钥匙,一把叫公钥,一把叫私钥,用其中一把加密的话,只能用另一把解密,反之亦然。另一个重要的性质是,给你密文,明文和其中一把钥匙,你还是解不出来另一把钥匙是啥。原理基本上是基于一些困难数学问题,例如因数分解和离散对数,常用的有RSADiffie-HellmanECC(椭圆曲线),比特币用的是椭圆曲线。

 

非对称加密除了和对称加密一样用于信息加密之外,还有另一个用途,就是身份验证。因为通常情况我们假设一对公私钥,公钥是公开的,而私钥只有本人有,于是一个人如果有对应的私钥,我们就可以认定他是本人。其中一个重要的应用就是数字签名——某个消息后面,发信人对这个消息做哈希运算,然后用私钥加密。接着收信人首先对消息进行哈希运算,接着用相应的公钥解密数字签名,再对比两个哈希值,如果相同,就代表这个消息是本人发出的而且没有被篡改过。

 

以上是基础知识,至于区块链怎么实现的,很简单:

 

交易(数据)写在区块里。

 

第一个区块叫创世区块,写啥都行。

 

从第二个区块开始,每个区块的第一部分有前一区块的哈希值。此外,区块里的每一笔交易(数据),都有发起人的数字签名来保证真实性和合法性。于是,先前区块里的任何数据都不可被篡改,原因见上。

 

到这为止有人可能会问:为什么要弄个链啊?直接所有数据加个哈希值不就行了?

 

因为——这个数据库并不是静止的啊。

 

数据库的数据是会增加的,而每次增加的数据,就是一个区块,于是这些生成时间不同的区块,就以这种形式链在一起了。

 

至于如何增加区块,就涉及到第三个部分——共识算法。

 

3,区块链采用共识算法来对于新增数据达成共识。

 

共识算法的目的,就是让所有节点对于新增区块达成共识,也就是说,所有人都要认可新增的区块。对于有中心的系统,这事很简单,中心说什么大家同意就好了,但是放到去中心化系统里,尤其是当有些节点有恶意的时候,这东西非常复杂,计算机科学里有个相应的问题,叫做“拜占庭将军问题”或者“拜占庭容错”(BFT)。

 

有很多用Lamport给出的那个例子来讲BFT的东西,我在这里换一个角度。

 

Lamport大神当年提出这个问题的时候在斯坦福研究中心给NASA做项目,他提出这个问题的原因并不是考虑类似比特币的应用场景(整个互联网成千上万个用户),而是考虑特殊背景下的一个简单的系统——

 

航天飞机的控制系统。

 

如果有航空背景的同学可能知道,飞机有三套独立的控制系统,为什么呢?因为任何系统都不可能完全不出故障,就算飞机控制系统的故障率已经极低了,还是有飞到一半这东西坏了的可能。于是我们可以弄两套独立的系统,同时坏掉的几率就会大大降低。

 

可是两套独立的系统还是不足以容下一个系统的错误——一架飞机迎面飞来,两套系统一个说要躲,一个说不躲,那到底是躲还是不躲呢?所以我们需要三台独立的系统,这样,如果有一个系统有故障了,还有两台能正常工作,能少数服从多数给出正确的结果。学过纠错码的同学对这个应该不陌生,这个系统的输出之间的汉明间距是3,所以可以纠正一位的错误。

 

然而,对于航天飞机,在冷战的背景下,万一某个系统不是坏掉了,而是被敌人控制了呢?三套系统还够吗?

 

答案是否定的,因为不同于单纯只是坏掉的节点,恶意节点可以做一些别的事来阻止整个系统达成共识。

 

这个部分略复杂要讲的话要单开一帖,所以我们只说最简单的情况(无签名同步系统)。

 

我们管三个系统叫ABC,正常工作流程是三个人每次得出结果就互相告诉一下,然后每个人选多数人同意的结果。这是个没有中央节点的分布式系统,也就是说三人不能聚在一起开个会啥的,仨人只能两两通信。这个时候,假设C有恶意,它的目标是破坏这个系统。于是,假设正确的读数是1AB都得出了1这个结果,这个时候C这个小婊砸告诉A说“我的结果是0B也觉得是0”,同时打个电话跟B说“哎我觉得是0A也这么说”,于是AB就懵逼了。假设你是A,你听到了两个不同版本的B的答案,B说自己选了1CB选了0,可是A这个时候没法知道BC谁才是那个骗了自己的小婊砸,因为如果B真的告诉A选了1然后告诉C0,他听到的结果和现在是一模一样的。

 

于是结论是,拜占庭容错,也就是需要容下一个恶意系统而非错误系统,需要4个独立系统。

 

(当然,签名可以解决这个问题,但是这只是同步系统的情况,在异步系统里这问题会变得更加复杂,原因是正常节点的回答有延迟,而恶意节点可以不回复,所以,正常节点一方面要等另一个节点的回复,但是它又不知道对方会不会回复因为对方有可能会有恶意,而在收到回复之前,它完全没法判断对方是正常节点还是恶意节点,这个问题叫异步BFT,也是BFT的最复杂的情况,这里不再做更多的解释,下文提到的BFT算法,其实都是异步BFT的算法)

 

Lamport提出这个问题之后,有无数的算法被提出来,统称BFT(拜占庭容错)算法,其中最有代表性的叫PBFT,然后由于最近区块链的热度,无数针对区块链应用场景优化过的BFT算法也涌现出来,但是一个重要的问题是,所有目前的BFT算法,都只能应用在小型网络里。原因很简单——因为BFT这个问题是设计给类似于航天飞机控制系统这样的场景的,早期的算法考虑的也主要是这种场景。PBFT论文里考虑的就是一个5个节点的系统。就算算上新提出的BFT算法,也最多应用在不超过100个节点的网络里。

 

这个问题被搁置了很久,直到比特币的诞生——中本聪从某种意义上简化了这个问题,在比特币中,同样是共识问题,中本聪引入了一个重要的假设——奖励,他之所以能这样做的原因是,他考虑的是一个数字货币,也就是说共识这个东西是有价值的。

 

于是在这样的系统上,他提出了工作证明机制。

 

所有挖矿,矿工,最长链,分叉等等等等,都可以归结为一句话:

 

说话是要有代价的,说真话是有好处的,说假话是要扣钱的……

 

这就是目前两类共识算法的核心区别:

 

BFT共识模型:恶意节点可以干任何事。

 

比特币共识模型:模型中有公认的“价值”,每个节点说话都需要一定代价,诚实节点会受到奖励,而恶意节点由于只付出代价而收不到奖励,变相受到了惩罚。

 

也就是说,BFT共识模型其实涵盖了比特币共识模型的场景,比特币共识其实放宽了BFT共识模型的限制。

 

比特币共识对于BFT的优势在于,由于给恶意节点的能力做了限制,恶意节点所能造成的破坏大大降低了,尤其是对于异步系统——BFT共识里恶意节点可以一直拒绝相应而诚实节点还需要一直等它(因为不知道它是不是恶意的),而对于比特币共识,随你便,你不响应就没有奖励可拿。于是,比特币共识算法可以应用于成千上万个节点,而且,任何人随时都可以加入,不需要预先在网络里注册自己的身份(而BFT算法里,网络中节点的数量和身份都必须是已知的)。

 

但比特币共识的缺陷在于,首先,得有个有价值的东西,也就是说放在比特币里这东西还行,以太坊的话现在可能也凑合,但是其他数字货币嘛……BFT共识有个严格的限定,就是恶意节点不能超过总数的1/3,然而其实比特币共识没有这样的限制,唯一的限制就是假定大部分节点都是理性的,是逐利的,也就是会采用最佳的策略来赚取最大的价值。所以,严格来说,自私挖矿这种行为在比特币共识里是允许的,而多数攻击,其实也算不上一种攻击,因为这些都没有突破比特币共识的框架——如果这个价值无限大,比特币共识是非常可靠的。然而这并不是事实,因为并不是每个虚拟货币都和比特币一样值钱,而在价值不高的情况下,比特币共识的前提就站不住脚了——当损失可能是几千上万块钱的时候,假定每个人都是理性的是合理,但是如果损失就几分钱这个假设就相当扯淡了,事实上也发生过一个比特币矿池跑到另一个货币恶意挖矿搞垮对手的情况。

 

此外,比特币共识是最长链共识,也就是说最长链-->大多数-->理性,于是分叉是允许的。于是导致了一些附带的问题,例如,如果网络有延迟,你怎么知道你手里那条链是整个网络里当前的最长链呢?于是,如果需要传输的数据多,那么延迟加大。延迟加大,那么越多的人手里的链并不是全网络的最长链。于是,全网络的最长链,就没法代表大多数。这就打破了比特币共识的根本,这也是为什么比特币区块频率是10分钟一块的原因。比特币目前有个著名的7币交易每秒的上限,而现在扩容闹得很厉害,以太坊的交易格式不同,也用了新的工作证明,想要改成权益证明,但这些都不本质。真正本质的是,在目前的网络条件下,如果适用全网的话,比特币共识的交易量基本上超不过100笔交易每秒这个量级。

 

上面这几段有可能太深了,简单来说,BFT共识和比特币共识的区别可以这么理解:

 

BFT共识:来,大家开个会讨论一下集思广益啊,讨论出大家都满意的结果为止。

 

问题:开会的效率大家都懂,人越多越不容易出结果。只能用于少数节点,用于上千个节点的话……大家想象一下一天开一次人大的场景。

 

比特币共识:你的诗念得不错,组织已经决定了,今天就你来当领导了,做得好有奖,做不好扣钱。

 

问题:奖励几千块钱还好,奖励几分钱谁好好干?

 

 

 

而区块链也就因此被分成了泾渭分明的两类,很多人都听过什么公有链私有链联盟链,但是,如果你们以为这是根据应用区分的就大错特错,其实,这两种区块链最本质的区别,还是因为共识模型或者说算法不同——BFT算法没法应用于大量节点,所以用BFT算法的就没法做公有链。而比特币共识得有个价值体系,这东西去做私有链联盟链就很不靠谱,因为一个单纯逐利的人的假设还算靠谱,但是如果对象是公司的话,公司的利益就太复杂了,不能简单认为他们只追逐区块链上那点价值。

 

1,公有链,以比特币,以太坊和所有虚拟货币为代表,都采用比特币共识,共识算法基本上都采用工作证明机制,也就是挖矿那些,这种机制其他回答里已经讲得够清楚了,就略过。工作证明一切都好,除了费电……费多少电呢?比特币的话,差不多和一个百万人级别的城市那么多。此外以太坊的创始人特别喜欢权益证明,似乎很快要小范围投入使用(100个区块里一个用权益证明)。但是目前为止,大家对这东西的可靠性还持观望态度。

 

2,私有链和联盟链。以IBMhyperledger-fabric,以及一大堆其他的类似于tendermint,甚至R3 cordaripple为代表,都用BFT共识。其实这方面的应用已经很多了,问题是,1,目前基本上所有应用给人的感觉都还是为了做区块链而区块链,真的觉得这东西好到不可或缺的应用还基本没有。2,由于为了区块链而区块链,其实很多场景的安全性和可靠性还值得怀疑,这点经常被被公有链的支持者诟病。

 

嘛,以上就是个人定义的区块链了,顺带概述一下现在区块链领域的发展。

 

之所以写这个帖子,就是因为发现明明是问区块链的问题,所有人都在讲比特币,都在讲挖矿,都在讲工作证明……工作证明不能说过时,也的确是现在公有链唯一可靠的共识算法,但是这东西确实是业界除了比特币死忠之外谁都不想要的东西好吗……

 

特别提醒:比特币采用区块链技术,但是区块链并不等同于比特币;全篇基于比特币底层区块链技术讲述,所以,部分模型可能不适用于以太坊等。另外,由于文章采用了一定的抽象、类举的叙事方式,中间或多或少有些地方会跟区块链底层严谨的技术实现有出入,如果让你觉得困惑,可以在评论下方留言或者私信我一起探讨。最后,也是受限于自己知识结构的不完整,这篇文章会随着我对区块链更深入认识后,随时进行修订,最后更新时间可参考该回答下方的时间戳。

 

首先不要把区块链想的过于高深,他是一个分布在全球各地、能够协同运转的数据库存储系统,区别于传统数据库运作——读写权限掌握在一个公司或者一个集权手上(中心化的特征),区块链认为,任何有能力架设服务器的人都可以参与其中。来自全球各地的掘金者在当地部署了自己的服务器,并连接到区块链网络中,成为这个分布式数据库存储系统中的一个节点;一旦加入,该节点享有同其他所有节点完全一样的权利与义务(去中心化、分布式的特征)。与此同时,对于在区块链上开展服务的人,可以往这个系统中的任意的节点进行读写操作,最后全世界所有节点会根据某种机制的完成一次又依次的同步,从而实现在区块链网络中所有节点的数据完全一致。

 

上图中,高亮的点就是区块链系统中分布在全球各地的一个个节点;而这些节点可以简单理解为一台服务器服务器集群

# 问题的由来

 

我们反复提到区块链是一个去中心化的系统,确实,「去中心化」在区块链世界里面是一个很重要的概念,很多模型(比如账本的维护、货币的发行、时间戳的设计、网络的维护、节点间的竞争等等等等)的设计都依赖于这个中心思想,那到底什么是去中心化呢?在解释真正去中心化之前,我们还是先简单了解下什么是中心化吧。

 

中心化?

回忆一下你在网上购买一本书的流程:

 

第一步,你下单并把钱打给支付宝;

第二步,支付宝收款后通知卖家可以发货了;

第三步,卖家收到支付宝通知之后给你发货;

第四步,你收到书之后,觉得满意,在支付宝上选择确认收货;

第五步,支付宝收到通知,把款项打给卖家。流程结束。

 

你会发现,虽然你是在跟卖家做交易,但是,所有的关键流程都是在跟支付宝打交道。这样的好处在于:万一哪个环节出问题,卖家和买家都可以通过支付宝寻求帮助,让支付宝做出仲裁。这就是一个最简单的基于中心化思维构建的交易模型,它的价值显著,就是建立权威,通过权威背书来获得多方的信任,同时依赖权威方背后的资本和技术实力确保数据的可靠安全。

 

你一定会摆出一个巨大的问号脸 .?——“通过权威背书来获得多方的信任,同时依赖权威方背后的资本和技术实力确保数据的可靠安全”,真的可以嘛?!

 

假如说,支付宝程序发生重大BUG,导致一段时间内的转账记录全部丢失,或者更彻底一点,支付宝的服务器被金三胖的一个导弹全部炸毁了。而我刚刚转出去的100元找谁说理去,这个时候,你就成了刀殂上的鱼肉;支付宝有良心,会勉为其难承认你刚刚转账的事实,但他不承认你也没辙,因为确实连他自己也不知道这笔转账是否真实存在。

 

上述就是中心化最大的弊端——过分依赖中心和权威,也就意味着逐渐丧失自己的话语权。

 

去中心化?

 

那么去中心化的形态是什么样子呢?还是拿刚才那个例子继续,我们构建一个极简的去中心化的交易系统,看看我们是如何在网络上从不认识的卖家手里买到一本书的。

 

第一步,你下单并把钱打给卖家;

第二步,你将这条转账信息记录在自己账本上;

第三步,你将这条转账信息广播出去;

第四步,卖家和支付宝在收到你的转账信息之后,在他们自己的账本上分别记录;

第五步,卖家发货,同时将发货的事实记录在自己的账本上;

第六步,卖家把这条事实记录广播出去;

第七步,你和支付宝收到这条事实记录,在自己的账本上分别记录;

第八步,你收到书籍。至此,交易流程走完。

 

刚才“人为刀俎我为鱼肉”的情况在这个体系下就比较难发生,因为所有人的账本上都有着完全一样的交易记录,支付宝的账本服务器坏了,对不起卖家的账本还存在,我的账本还存在;这些都是这笔交易真实发生的铁证。

 

当然,在这套极简的交易系统中,你已经发现了诸多漏洞和不理解,比如说三方当中有一个是坏人,他故意记录了对他更有利的转账信息怎么办;又比如说消息在传递过程中被黑客篡改了怎么办等等等等。这在以往的计算机概论或者计算机网络书本上中可能都有提及到——“类两军”和“拜占庭将军”问题。这里就不打算赘述,因为暂时跟主线不相关,感兴趣的同学可以去Google或者百度一下,你只需要知道,在我们下面即将展开讲到的区块链系统中,通过巧妙的设计,足以解决上述存在的BUG

 

既然话已说到这份上,相信了解一点技术、特别是有运维背景的同学大概能够从极简交易系统中窥视到了更多区块链的一些影子——

 

分布式存储,通过多地备份,制造数据冗余

让所有人都有能力都去维护共同一份数据库

让所有人都有能力彼此监督维护数据库的行为

 

在我看来,你猜测的基本上没错。其实这些就是区块链技术最核心的东西,外人看起来高大上、深不可测,但探究其根本发现就是这么简单和淳朴。当然,这里面肯定会有很多很多很多细枝末节的技术需要重构。

 

如果你差不多认同上面的观点,那我们应该基本上可以达成共识,分布式部署肯定是构建去中心化网络理所当然的解决方向——通过P2P协议将全世界所有节点计算机彼此相互连接,形成一张密密麻麻的网络;以巧妙的机制,通过节点之间的交易数据同步来保证全球计算机节点的数据共享和一致。

 

哈哈,说的轻巧,“交易数据这么重要的东西,在一个完全不信任的P2P网络节点中以一种错综复杂的方式传递,数据的一致性和安全性谁来保证,如果说互相监督,他们到底怎么做到?”

 

好了,不卖关子了,下面让我们围绕这个最最最最直接的问题开始进入到真正区块链的世界,抽丝剥茧看看它到底是如何一步一步形成的,又是如何一步一步稳定运转。

 

# 从全球节点到交易数据

 

这张图的制作的意义为的是帮助你在宏观上先快速理解区块链中所涉及到的相关名词以及他们的层级关系。同时,文章的知识结构和设计思路也大抵上也会按照:

 

首先,将区块作为最小单位体,讲述极简区块链系统是如何运转的;

接着,进入到比区块更小单位体——交易记录,理解区块链是如何处理数据的;

最后,将所有知识点柔和在一起,重回到区块和区块链,完整讲述整个工作流程。

 

希望你在这个引导和结构下有一个比较好的阅读体验。Let's go~

 

# 区块,混沌世界的起源

 

既然已经达成共识,所以,我们事先构建好了一个去中心化的P2P网络;同时,为了让读者朋友们听起来更轻松,我先粗暴的规定在这个极简的区块链系统里,每十分钟有且仅产生一笔交易。

 

故事继续,在节点的视野里,大概每十分钟会凭空产生一个建立在自己平行宇宙世界的神奇区块(你可以将区块想象为一个盒子),这个区块里放着一些数字货币以及一张小纸条,小纸条上记录了这十分钟内产生的那唯一一笔交易信息,比如说——“小A转账给了小B100元”;当然,这段信息肯定是被加密处理过的,为的就是保证只有小A和小B(通过他们手上的钥匙)才有能力解读里面真正的内容。

 

这个神奇的区块被创造出来之后,很快被埋在了地底下,至于埋在哪里?没有一个人不知道,需要所有计算机节点一起参与进来掘地三尺后才有可能找到(找到一个有效的工作量证明)。显然,这是一件工作量巨大、成果随机的事件。但是呢,对于计算机节点来说,一旦从地底下挖出这个区块,他将获得区块内价值不菲的数字货币,以及“小A转账给了小B100元”过程中小A所支付的小费。同时,对于这个节点来说,也只有他才有权利真正记录小纸条里的内容,这是一份荣耀,而其他节点相当于只能使用它的复制品,一个已经没有数字货币加持的副本。当然这个神奇的区块还有一些其他很特别的地方,后面我们会再细细聊。

 

为了更好的描述,我们将计算机节点从地底下挖出区块的过程叫做「挖矿」,刚才说了,这是一件工作量巨大、运气成分较多、但收益丰厚的事儿。

 

过了一会儿,来自中国上海浦东新区张衡路上的一个节点突然跳出来很兴奋的说:“ 我挖到区块了!里面的小纸条都是有效的!奖励归我!” 。虽然此刻张衡路节点已经拿到了数字货币,但对于其他计算机节点来说,因为这里面还涉及到其他一些利益瓜葛,他们不会选择默认相信张衡路节点所说的话;基于陌生节点彼此不信任的原则,他们拿过张衡路节点所谓挖到的区块(副本),开始校验区块内的小纸条信息是否真实有效等等。在区块链世界里,节点们正是通过校验小纸条信息的准确性,或间接或直接判断成功挖出区块的节点是否撒谎。(如何定义小纸条信息真实有效,后面会讲解,这里暂不做赘述)。

 

在校验过程中,各个节点们会直接通过下面两个行为表达自己对张衡路节点的认同(准确无误)和态度:

 

停止已经进行了一半甚至80%的挖矿进程;

将张衡路节点成功挖出的区块(副本)追加到自己区块链的末尾。

 

你可以稍微有点困惑:停止可能已经执行了80%的挖矿行为,那之前80%的工作不是就白做了嘛?!然后,区块链的末尾又是个什么鬼东西?

 

对于第一个困惑。我想说,你说的一点没错,但是没办法,现实就是这么残酷,即便工作做了80%,那也得放弃,这80%的工作劳苦几乎可以视为无用功,绝对的伤财劳众。第二个困惑,区块链和区块链的末尾是什么鬼?这里因为事先并没有讲清楚,但是你可以简单想象一下:区块是周期性不断的产生和不断的被挖出来,一个计算机节点可能事先已经执行了N次“从别人手上拿过区块 -> 校验小纸条有效性”的流程,肯定在自己的节点上早已经存放了N个区块,这些区块会按照时间顺序整齐的一字排列成为一个链状。没错,这个链条,就是你一直以来认为的那个区块链。如果你还是不能够理解,没关系,文章后面还会有很多次机会深入研究。

 

 

# 走进区块内,探索消息的本质

 

上面我们构建了一个最简单的区块链世界的模型,相信大多数同学都已经轻松掌握了。但是别骄傲也别着急,这还只是一些皮毛中的皮毛,坐好,下面我们准备开车了。

 

前面我们说到“大概每十分钟会凭空产生一个神奇的区块,这个区块里放了一张小纸条,上面记录了这十分钟内产生的这唯一一笔交易信息”。显然,十分钟内产生的交易肯定远不止一条,可能是上万条,这上万条数据在区块链世界是如何组织和处理的呢?另外,为什么在纸条上记录的只是某一次的交易信息,而不是某一个人的余额?余额好像更符合我们现实世界的理解才对。

 

既然存在这样那样的疑问。现在我们就把视线暂时从“区块”、“区块链”这些看起来似乎较大实体的物质中移开,进入到区块内更微观的世界里一探究竟,看看小纸条到底是怎么一回事,它的产生以及它终其一生的使命:

 

发起交易的时候,发起人会收到一张小纸条,他需要将交易记录比如说“盗盗转账给张三40元”写在纸上。说来也神奇,当写完的那一刹那,在小纸条的背面会自动将这段交易记录格式化成至少包含了“输入值”和“输出值”这两个重要字段;“输入值”用于记录数字货币的有效来源,“输出值”记录着数字货币发往的对象。

刚刚创建的小纸条立马被标记成为“未确认”的小纸条。从地下成功挖出区块并最终连接到区块链里的小纸条一开始会被标记为“有效”。若这条有效的小纸条作为其他交易的输入值被使用,那么,这个有效的小纸条很快会被标记为“无效”。因为各种原因,区块从链上断开、丢弃,曾经这个区块内被标记为“有效”的小纸条会被重新标记为“未确认”。

区块链里面没有账户余额的概念,你真正拥有的数字资产实际上是一段交易信息;通过简单的加减法运算获知你数字钱包里的余额。

 

上面的123仅仅作为结论一开始强行灌输给你的知识点,其中有几个描述可能会有点绕,让你觉得云里雾里,没有关系,因为我们立刻、马上就开始会细说里面的细枝末节。

 

 

上图,是区块内,盗盗在一张小纸条上记录下的交易信息,后被格式化的呈现

 

上图就是从无数打包进区块内的小纸条中,抽取出来的一张,以及它最终被格式化后的缩影。单看右侧的图可能很容易产生误会,虽然看起来有多行,但实际上就是“盗盗转账给张三40个比特币”这一条交易数据另外的一种呈现形态。因为区块链世界里面这么规定,每一条交易记录,必须有能力追溯到交易发起者 发起这笔交易、其中所涉及金额的上一笔全部交易信息;即这笔钱从何而来的问题。这其实很容易理解,在去中心化的网络中,通过建立交易链、和通过交易链上的可溯源性间接保证数据安全和有效。

 

我们继续看,在区块链世界里,我们是如何仅通过“盗盗转账给张三40个比特币” 这条交易信息完成转账流程的。其实跟现实中你在路边买一个包子的流程大抵上相同。

 

第一步:判断是否有足够的余额完成交易

 

这里我们再一次重申,区块链世界是没有余额的概念,余额是通过简单数字的加减最终获得,你拥有所谓的数字货币实际上是因为你拥一条交易记录,即 “盗盗转账给张三40个比特币”!这里,我们还是拿这条记录说事:

 

追溯“输出值”是“盗盗”相关的全部有效交易记录作为,对有效交易中的数字进行简单求和,判断是否大于等于40,如果确实大于等于,则将这些有效的交易记录合并形成一条新的交易记录(如下图)。如果小于40,其实可以不需要再继续往下探讨。

 

就上图的例子,我们追溯到曾经转账给盗盗的有效交易记录有“小A转账给盗盗10 btc”、“小B转账给盗盗20 btc”、“小C转账给盗盗 25 btc”,我们需要将这三条交易记录合并成一条更复杂描述的交易记录,即 ( A转账给盗盗10 btc + B转账给盗盗20 btc + C转账给盗盗 25 btc ) 转账给张三40 btc

 

第二步:判断是否需要找零

 

对追溯到的有效交易数字求和,如果发现大于需要支付的金额,需要将多出的数字重新支付给自己,相当于找零。对应生成了一条全新的交易记录(如下图)。

 

就上图例子来说,我们最后合并成的交易记录 ( A转账给盗盗10 btc + B转账给盗盗20 btc + C转账给盗盗 25 btc + 盗盗转账给盗盗15 btc ) 转账给张三40 btc 事实上等同于“盗盗转账给张三40 btc”。其中“盗盗转账给盗盗15 btc”就可以理解找零。

 

第三步:发出去,让全球节点认同和备份小纸条

 

这条内部重新处理过的复杂交易记录被塞进区块,埋到地下,等待节点挖出来,一旦区块被挖矿成功,并且该区块最终被连在了区块链的主链上。张三将最终拥有了这条交易记录,而先前的“小A转账给盗盗10 btc 、“小B转账给盗盗20 btc 、“小C转账给盗盗25 btc”都将被视为已经使用过的交易记录——从此被贴上“无效”的标签,意味着这些交易记录将永远不会再被追溯到。

 

我们最后一次重申,只是希望让你加深印象:拥有数字货币=拥有交易记录!

 

通过设计巧妙的精巧密码学保证数据安全

 

记录着交易信息的小纸条借助区块这个载体,在分布式的网络中以不同的轨迹错综复杂的传递,我们前面说了,你真正拥有的数字资产实际上是一段交易信息,而不是你常规意义上理解的货币。所以这个过程就需要重点解决两个问题:

 

接受到的这条交易记录在传输过程没有被其他人所篡改

接受到的这条交易记录确实是由发起交易的人所创造

 

在这里,我们需要事先引入两个知识点,可能稍微有点难消化,但都是计算机领域较为成熟的和基础的概念。

 

第一个知识点:Hash()函数。你只需要知道,任意长度的字符串、甚至文件体本身经过Hash函数工厂的加工,都会输出一个固定长度的字符串;同时,输入的字符串或者文件稍微做一丢丢的改动,Hash() 函数给出的输出结果都将发生翻天覆地的改变。注意,Hash()函数是公开的,任何人都能使用。

 

上图,仅仅一个小数点的变化,输出的结果已经翻天覆地

 

第二个知识点:非对称加密。你也只需要了解,任何人手里都有两把钥匙,其中一把只有自己知道,叫做“私钥”,以及一把可以公布于众,叫做“公钥”;通过私钥加密的信息,必须通过公钥才能解密,连自己的私钥也无解。公钥可以通过私钥生成多把。

 

有了这些知识点的加持,上面两个问题开始变得有解。下面我们来看下内部是如何扭转和工作的吧,这里拿“小A 转账给了小B 100元钱” 举例:

 

第一步:小A会先用Hash函数对自己的小纸条进行处理,得到一个固定长度的字符串,这个字符串就等价于这张小纸条。

第二步:小A使用只有自己知道的那一把私钥,对上面固定长度的字符串进行再加密,生成一份名叫数字签名的字符串,这份数字签名能够充分证明是基于这张小纸条的。你可以这么理解,在现实中,你需要对某一份合同的签署,万一有人拿你曾经在其他地方留下的签名复制粘贴过来怎么办?!最好的办法,就是在你每一次签名的时候,故意在字迹当中留下一些同这份合同存在某种信息关联的小细节,通过对小细节的观察可以知道这个签名有没有被移花接木。步骤一和步骤二的结合就是为了生成这样一份有且仅针对这条小纸条有效的签名。

第三步:小A将「明文的小纸条」、刚刚加密成功的「数字签名」,以及自己那把可以公布于众的「公钥」打包一起发给小B

第四步:当小B收这三样东西,首先会将明文的小纸条进行Hash()处理,得到一个字符串,我们将其命名为“字符串1”。然后,小B使用小A公布的公钥,对发过来的数字签名进行解密,得到另外一个“字符串2”。通过比对“字符串1”和“字符串2”的一致性,便可充分证明:小B接受到的小纸条就是小A发出来的小纸条,这张小纸条在中途没有被其他人所篡改;且这张小纸条确实是由小A所编辑。

 

 

可以看得出来,加解密的过程几乎是一环套一环,中途任何环节被篡改,结果都是大相径庭。借助这一连串的机制,其实已经能够很好的在公开、匿名、彼此不信任的分布式网络环境中解决数字交易过程中可能遇到的很多问题。这个环节可能确实有点难理解,现在,我需要你停下来,静下心,花上几分钟闭目慢慢回味其中设计精湛的地方。

 

掌握了这部分知识以后,我们在这里回答一下前面没有解释清楚的问题,「节点对区块的检验」检验的到底是什么?实际上就是:

 

检验区块内的交易记录签名是否准确(是否被篡改)

检验区块内的交易记录输入值是否“有效”(是否使用过)

检验区块内的交易记录输入值的数字之和是否大于等于输出值的数字

 

# 重回“区块”和“区块链”的世界

 

好了,对小纸条和交易记录的研究我们点到为止,其实信息量已经是巨大的了,让我们合上盖子,重回较大实体、继续聊聊“区块”和“区块链”的话题。还记得,咱们在一开始讲到关于区块的特征吗?区块创造后被埋在地下,需要经过节点们马不停蹄的挖采、而且是凭运气的挖采才有可能获得——不仅仅如此,事实上他还有其他很多神奇的地方,比如说:

 

凭空产生的区块在刚刚创建的时候会形成一股强大的黑洞效应,它会尝试将这段时间全世界各个节点上产生的所有小纸条(交易记录)统统吸进来;在合上区块盖子之前,同时会在区块内放上一些数字货币以及其他一些东西。

区块拥有一个唯一的ID,但它只会在这个区块被节点成功从地下挖出来之后创建。这个ID至少会跟「区块内所有小纸条的集合」、「即将与之相连的上一个区块ID」以及「挖矿节点的运气值」等因素相关。既然前面我们已经简单了解了“Hash()函数”这个东西,这里不妨透露给大家:“区块ID = Hash(‘区块内所有小纸条的集合’+’即将与之相连的上一个区块ID+‘挖矿节点的运气值’+’…’) ;基于先前掌握的知识,然后你应该知道区块内任意一张小纸条的信息稍微做改动、或者节点挖矿运气好一点坏一点等等,当前区块的ID都会 biu~ ”的发生改变。

 

 

基于上述12点,如果阅读足够仔细的同学可能会有些头大。在文章开头为了更好的描述,我在设计简化区块链系统的时候故意模棱两可了几个概念,这也许已经误导到了部分同学。这里不得不停下来和你一起修正下之前在你大脑中已经构建的区块链世界观。我们前面讲道,“在节点的视野里,大概每十分钟会凭空产生一个建立在自己平行宇宙世界的神奇区块”。如何正确去理解这句话呢?——拥有上帝之眼的你,可以这么拆解问题、看待问题:

 

同一个周期内,全网并不是产生唯一的一个区块等待挖掘;每个节点事实上都在周期性的创造区块和挖出区块;只是在某一个节点的视野里,它不能感知到另外一个节点上区块的产生。为何这里要特别强调“在某一个节点的视野里”,就是因为我们刚刚讲到,从区块的视角来说,区块的凭空产生,是基于即将与之相连的上一个区块ID;而从节点的视角来看,区块的凭空产生是基于当前节点区块链末尾的那个区块ID产生的。

全网会尽力控制在一个周期内只有一个节点能够成功挖出区块,但是不能够完全避免多个节点同时挖出区块的可能性;如何尽力控制?比如说,当大伙挖矿的热情高涨、工作效率提高,区块会被埋在更深更广的地方等。简而言之,通过提高工作难度,来维持这个平衡。另外,值得注意的:产生区块、挖出区块、校验区块,他们的时间周期近乎相同。

 

挖矿,本质是通过与或运算,去碰撞一个出一个满足规则的随机数。这个部分要细讲的话,估计又可以写出两三千字来。我觉得到目前为止,并不影响主轴知识点的讲解,这一块会作为后续知识结构的完善被撰写(计划124日前完成)。感兴趣的同学可以Google百度查阅下什么叫“挖矿”、“工作量证明 POW”等。

 

分叉

 

现在,我们终于对“区块”这个概念有了更全面的认识,文章开头讲的故事就可以继续展开来絮叨絮叨:

 

假如几乎同一时间,「中国上海浦东新区张衡路」上的节点和「美国纽约曼哈顿第五大道」上的节点异口同声喊出来:“我挖到区块了!里面的小纸条都是有效的!奖励归我!”。其他节点也几乎同时参与了对这两个区块的校验,结果发现这俩都没毛病,各节点也开始犯困,因为在他们的视野里他们并不清楚最后哪一个区块应该会被主链接纳。算了!都连在自己区块链尾巴上吧,这时尴尬了,区块链硬生生的被分叉了!

 

产生分叉

 

你肯定在想,那还得了,这种情况继续下去,每个节点的区块以及他们整理维护的小纸条都将变得不一样,这已经严重违背了区块链世界里第一大最基本原则——所有节点共同维护同一份数据。所以,为了解决这个问题,区块链世界引入了一条新的规则——拥有最多区块的支链将是真正被认可有价值的,较短的支链将会被直接Kill掉。

 

我们大伙都知道挖矿的过程存在巨大的工作量(如果没有任何难度,把区块扔在人群中,必然同一时间发现区块的节点数量将大大增加,也就会产生无数的支链,通过这个例子,你大概也就能够明白,区块链世界为什么需要设置工作难度了吧),并且在计算机的硅基世界里,不可能出现所谓 “同时” 的概念,哪怕纳秒的差别,那也总是会有先后顺序。所以理论上,“分叉”的这种僵局很快会在下一个区块被挖掘出来(以及校验区块)的时候被打破,实在不行下下个,或者下下下个……总之机制可以让整个分叉的区块链世界迅速稳定下来。

 

“分叉”这种僵局在确认下一个区块(以及校验小纸条)的时候被打破,从而整个区块链世界迅速稳定下来

 

就上图而言,所有基于张衡路节点挖矿获得的区块以及后续区块的那条分支被视为有价值,最终会全部保留了下来;其他节点会统一效仿那个拥有更长分支链的节点所做的决策。另外,值得一提的是,同一时间,较短分支上的区块会立即丢弃,而里面的小纸条也会随之释放出来,被重新标记上“未确认”。

 

“双花”与“51%攻击”

 

你可能已经开始困惑或者有点兴奋,末尾几个区块的排序在修复过程中,因为时间差肯定会产生一些模棱两可的地方,这往往会给数据安全埋下一颗雷。一个最简单的假设——我记录的一张小纸条很不巧地被归在了一条较短的支链上,这条支链在竞争过程中理所当然输掉了比赛,区块被丢弃、小纸条被无情的贴上“未确认”的标签。在等待下次区块重新确认的过程中,这个时间差内,我,好像、似乎可以做点什么坏事 ԅ(¯﹃¯ԅ) ,就比如说“双花”(双花,花两次,双重支付的意思)

 

你脑海中也许很快浮过的这样的构想,可不可能通过下面这种方法触发双花问题的产生,从而让我不劳而获:

 

假设有一个名叫X-Man的坏家伙,他控制了一个计算机节点,这个节点拥有比地球上任何一个节点算力都强大的计算机集群。

首先,X-Man事先创造了一条独立的(不去广而告之)、含有比较多区块的链条。其中一个区块里放着“X-Man转账给X-Man 1000元”的纸条。

接着,X-Man跟张三购买了一部手机,他在小纸条上记录下“X-Man转账给张三1000元”;这条信息被三次确认后(即三个区块被真实挖出、校验和连接),然后,张三把手机给了X-Man

X-Man拿到手机之后,按下机房的开关,试图将先前已经创造的区块链条连接在自己这个节点区块链的末尾。

大功告成,X-Man拥有了一条更长的区块链条,那些较短、存放着“X-Man转账给张三1000元”的区块链,以及在区块链世界里那则真实转账行为被一同成功销毁。(?

 

事实真的如此吗?在这里我可以很负责任的说,too young too simple,区块链世界规则的制定远比我们想象的要健全很多,还记得我们之前讲的“区块的ID至少会跟区块内所有小纸条的集合、即将与之相连的上一个区块ID以及挖矿节点的运气值等因素相关”。 在这里,正是因为打算连接到主链的时候,事先准备的链子会意识到马上要连接上的那个区块ID发生了改变,随之而来的是后面所有区块ID都瞬间。节点不得不重新对后续区块的解锁以及对区块内小纸条的校验。

 

在区块链的世界,重新计算的行为等同于把自己(节点)置身于同一个起跑线,跟世界上其他所有的节点一同竞争挖矿。你会说,我拥有更强大的计算能力,但是对不起,跟你竞争的对象并不是第五大道、南京西路、香榭丽舍大道上的某一个节点,而是全球所有算力的集合,在这个集合中,你拥有的算力永远都只是一个很小的子集。所以,根据区块链算力民主、少数服从多数的基本原则,这个构想将永远不会成立。

 

 

除非....

 

你控制着全球51%的算力,这也就是区块链世界里另外一个著名的概念,叫做“51%攻击”,但这也仅仅是一个理论值,在真实世界里这样的攻击我个人觉得是很难发动起来的,这里面就牵涉到很多经济、哲学甚至政治的因素。举个最简单的例子:X-Man为了回滚刚刚发生的一笔交易记录,成功发起了51%攻击,这意味着很快整个区块链系统将会崩盘,因为这次攻击已经严重伤害到人们对这套系统的信任,接着比特币开始暴跌至几乎一文不值;但是这个拥有51%算力的X-Man原本完完全全可以通过挖矿的方式获取更多收益,购买无数的iPhone手机。那他不是脑袋不是坏了还能是啥?对51%攻击话题感兴趣的同学可以阅读这篇文章《什么是比特币51%攻击?》。

 

至此,我觉得区块链最基础、最核心的知识已经全部讲完了(除了挖矿内部实现原理,作为一个遗憾留在这里,有时间会完善掉),相信你已经对它有了一个宏观的认识。另外,由于这篇文章采用了适当抽象、类举的叙事方式,中间或多或少有些地方会跟区块链底层严谨的技术实现有出入,欢迎大家来纠错。另外,也是受限于自己知识结构的缺失,这篇文章会随着我对区块链更深入认识后,随时进行修订,最后更新时间可参考该回答下方的时间戳。

 

问答部分

 

去中心化的系统中,到底是谁在发行货币?是无限量发行吗?

 

比特币的货币是通过挖矿(工作量证明)来发行的,总数量是通过程序写死了2100万个,而第一笔区块奖励也是硬编码写死的。矿工挖出一个区块所获得的奖励,每隔21万个区块将减少一半,按照平均10分钟挖出一个区块的执行效率,也就就说差不多每四年会锐减一次。20091月起每个区块奖励50个比特币,201211月减半为每个区块25个比特币,20167月减半为12.5个比特币。基于这个规则,到2140年,所有比特币(20,999,999,980)将全部发行完毕,之后不会再有新的比特币产生。

 

矿工节点的收益除了挖出区块以外还有哪些?

 

矿工节点的收益主要由两部分组成:1)挖出新区块的奖励;2)挖出新区块内所含交易的交易费。但就目前来说,一个区块内的交易费大概只占到矿工总收入的0.5%甚至更少,大部分收益主要还是来自于挖矿所得的比特币奖励。然而,随着挖矿奖励的递减,以及每个区块中包含的交易数量增加,交易费在矿工收益中所占的比重将会逐渐增加。在2140年之后,所有的矿工收益将完全由交易费构成。

 

区块链就是把加密数据(区块)按照时间顺序进行叠加(链)生成的永久、不可逆向修改的记录。

 

想象一个封闭岛国的房地产市场,只允许岛民购买和出售岛上房屋;所有交易记录都有岛国唯一的地产中介进行打印和保存(因为其他人没有打印机)。每座房子的产权交易记录都是一条信息链;房子过往每一次交易的信息按照时间顺序形成了一个链条。假如每份纪录都被锁在一个独立的信箱里,只有房屋所有人拥有钥匙;新的交易记录可以被塞进信箱里,成为信息链的最新一环,但是一旦塞进信箱里,纪录就不可以再被取出丢弃,或者被修改。

 

此时,这所有信箱合起来就是一个非数字化的区块链--信息加密,每个秘钥持有人仅可以看到或者授权他人看到自己房屋的交易信息;而每次给房屋添加交易信息都是永久不可逆的过程。不会丢失,不能修改。

 

再想象:如果岛上并没有中介,而是每家各有一个打印机和一面对应岛上所有房产的信箱墙,各家人依然只可以打开自家墙上跟自己房产有关的信箱。如果每次有一座房子被交易,交易人要跑遍岛上所有人家,给对应的信箱里添一页纪录。那这时候,即使有几家发生了火灾,丢掉了交易纪录,或者有人偷偷把自己家信箱里的纪录撤换掉,整体交易记录也不会出现偏差--居民只要在每次交易之前拿出每个人那里保存的交易记录副本,根据多数原则确定统一的交易历史,并纠正错误的副本,就可以在无监督的情况下运行区块链。这也就是常常被与区块链混为一谈的另一技术:分布式账本(distributed ledger)

 

区块链是一种可以完全改变金融系统底层设计的技术,因为可以实现所有市场参与人对市场中所有资产的所有权与交易记录的无差别记录,所以可以完全消灭掉清算和托管这些在交易前中后进行所有权确认的中间环节;另外,区块链作为一种电子信息记录,可以结合计算机算法实现交易的自动化,即智能合约。区块链结合其他金融技术有许多衍生应用,每种均可以将一类市场中介替代。区块链之于金融服务,如同TCP/IP之于互联网:一旦底层标准得到认可与普及,类似比特币和R3的具体应用将会出现在金融服务的每个角落里。

 

     最近一直在研究区块链,之前做了3年的php开发,感觉最近区块链来的有点猛啊,太火了,很多美国知名大学把区块链技术加入课程列表。现在各领域涌现出对区块链专业知识的需求,区块链可以应用在金融行业、征信系统、供应链、在线音乐、房地产、医疗等等各个行业。关键现在是没有相关区块链人才啊,弄的自己都想去学习区块链了,现在国内国外很多的公司都是百万年薪招区块链人才。

 

为什么会出现这样的用工荒,其实原因很简单,就是懂区块链的太少了,先给大家普及一下区块链的知识。区块链技术是指通过去中心化和去信任的方式集体维护一个可靠数据库的技术,可以用4个关键词去形容:去中心化(Decentralized)、去信任(Trustless)、集体维护(Collectively maintain)、可靠数据库(Reliable Database)。

 

区块链又分为以下几种:

 

1、公开区块链(public blockchain) 例子:比特币,Ethereum Frontier。公开区块链上的数据所有人都可以访问,所有人都可以发出交易等待被写入区块链。共识过程的参与者(对应比特币中的矿工)通过密码学技术以及内建的经济激励维护数据库的安全。公开区块链是完全的分布式。

 

2、协作区块链(federated blockchain) 例子:Hyperledger以及德勤等会计所尝试的审计系统。参与区块链的节点是事先选择好的,节点间很可能是有很好的网络连接。这样的区块链上可以采用非工作量证明的其他共识算法,比如有100家金融机构之间建立了某个区块链,规定必须67个以上的机构同意才算达成共识。这样的区块链上的数据可以是公开的也可以是这些节点参与者内部。部分意义上的分布式。

 

3、私有区块链(private blockchain) 例子:Eris Industries。参与的节点只有用户自己,数据的访问和使用有严格的权限管理。近期部分金融机构公布的内部使用的区块链技术大都语焉不详,不过很可能都在这个范围内。

 

关于区块链本身的知识就说到这里吧,网上和知乎上有很多的文章在介绍,我就不在此累赘了。因为自己最近也在学习研究区块链,接下来就给大家分享一下自己关于区块链学习的一些经验。以下共3种学习的方式,大家可以根据自己的实际情况去选择:(1)看书;(2)看视频;(3)找人带或者参加培训

 

区块链,是一种技术,它解决的是市场经济中最核心的“信任”问题,把陌生人之间的信任成本降到极低的水平。

 

市场经济中有一样至关重要的东西,这就是“信任”。假如没有信任,任何交易都不可能成立。

 

你到菜场买菜,如果你不相信蔬菜里农药含量达标,你就不会跟那个菜贩子交易;你到小店买瓶水,如果店员不相信你给的是真钞,也不会把水卖给你。

 

传统的小农经济是熟人经济,交易规模仅限于居住范围附近比较熟悉的人们之间,因为熟人骗你,他就会失去你这个社交关系,并且弄坏他在整个熟人圈子里的名声。相比陌生人,我们相信熟人欺骗我们的可能性比较低。

 

所以,一旦超出熟人范围,我们需要用很高的成本来识别一个陌生人会不会骗我,我怎么规避被骗的风险。这种情况就会阻碍交易,限制交易。

 

此外,不同种族、民族、文化、宗教信仰等等,都会天然存在这种信任问题。

 

那么我们现在身处的市场经济,为什么能有那么多陌生人之间的交易呢?因为诞生了新的机制,解决了陌生人间的信任问题。

 

到目前为止,解决信任问题的最重要的机制,就是“信任中介”机构和模式。

 

只要你和陌生人,都信任一个第三方机构,那可以通过这个第三方机构来解决你们之间的信任问题。

 

这个第三方机构,我们把它叫做信任中介。政府、银行都是信任中介。

 

你辛苦生产出来的商品卖给一个陌生人,换来一叠人民币纸钞,你觉得没问题,那是背后有因为发钞银行的信用、政府权威的保证,保证了纸钞的币值和有效性。否则,卖东西,换来几张普通纸头,谁愿意?

 

在全球村时代、互联网时代,买你东西的人可能是不会见面、千里之外的陌生人。信任度更低了,因此支付宝承担起信任中介作用,买家先把货款付到支付宝的账上,等到收到货了,确认没问题,再同意把货款打给卖家。淘宝等电商在短短十几年间快速繁荣起来。

 

信任中介在交易体系中,处于一个中心位置,所有的交易,都要通过它来解决信任问题。

 

但是,信任中介本身的成本,往往很巨大。

 

政府作为信任中介,每年要收多少交易税?最赚钱的行业是哪个?金融服务业。拥有支付宝的蚂蚁金服年利润超过百亿。

 

这意味着什么呢?市场的交易双方,实际上付出了极为庞大的信任成本。

 

如果有什么办法,能取消或者大幅降低这种信任成本,那么普通大众的交易费用可减少,所得利润就能大幅增加了。

 

于是在互联网时代,区块链技术上场了。

 

它让交易方甩开中介,解决陌生人间的信任问题,大幅降低信任成本。

 

区块链的概念最早于2008年在比特币创始人,中本聪的论文《比特币:一种点对点的电子现金系统(Bitcoin: A Peer-to-Peer Electronic Cash System)》中首次提出。

 

区块链可以理解为一种公共记账的技术方案,其基本思想可以这样理解:通过建立一个互联网上的公共账本,由网络中所有参与的用户共同在账本上记账与核账,每个人(计算机)都有个一样的账本,系统会自动比较,会认为相同数量最多的账本是真的账本,少部分和别人数量不一样的账本是虚假的账本。

 

在这种情况下,任何人篡改自己的账本是没有意义的,除非你能够篡改整个系统里面大部分节点。同时,所有的数据都是公开透明的,并不需要一个中心服务器作为信任中介。因此,区块链技术在技术层面就能保证信息的真实性、不可篡改性,也就是可信性。

 

这段话有点生涩,我们打个比方,就好理解了。

 

它就相当于让每个人有个神奇的小本本。当任意两个人之间做了一笔交易,交易的全部信息就会被记录在这两个人的小本本上。同时,自动复制到所有人的小本本上。

 

交易生效后,你想反悔了。对不起,这笔交易因为有所有人作证,你是赖不掉的。哪怕你把自己的小本本上的记录篡改掉,也没用。因为每个人本子上都记录了,不可能把所有人的本子都改掉。

 

其他所有人都自动地为你们的交易做公证,谁也别想赖账。

 

因为区块链可以大规模扩展、数据公开透明,每个客户端数据一致,即使部分客户端被毁也不影响数据安全,这些高度可靠的技术特点,能用低成本解决陌生人间的信任问题。

 

这个技术,可以推广到所有可以数字化的领域,比如数字货币、支付清算、数字票据、权益证明、征信、政务服务、医疗记录等。

 

从中长期看,区块链会是一项革命性的技术,会像现有的互联网一样带来巨大的社会变革,是有巨大的投资价值和赚钱机会的。

 

未来,那些能把区块链结合到不同场景推广应用的公司,可能是下一群BAT,下一个谷歌、微软和苹果。

 

而比特币作为区块链技术的第一个现实应用,已经在全世界广泛接受和使用,数百万用户、数以万计的商户接受了比特币这种数字货币的支付,作为货币的交换价值在增长,甚至由于总量固定,长期价值看涨的共识,成为类似黄金的避险资产,价格暴涨。

 

但是!这种暴涨,不是完全基于它的价值,更多是大众基于无知和非理性情绪,而炒作出来的价格泡沫。

 

现在不要抱着暴富的心态去追高数字货币,结局会很惨!

 

也不要轻易跟着股市炒概念,否则你就是下一个被割的韭菜!

 

看到一些争论区块链定义的回答, 突然意识到自己这篇解释原理的回答其实是一直是对着比特币撸的, 介于区块链的定义业界并没有一个特别明确和唯一的回答, 这里先给出个人根据所读论文而总结出的“区块链”应有特质:

 

使用了具有 "哈希链" (下文有解释) 形式的数据结构保存基础数据

有多个结点参与系统运行(分布式)

通过一定的协议或算法对于基础数据的一致性达成共识(共识协议/算法)。

介于比特币目前是区块链最典型且最有影响力的应用之一, 理解比特币如何使用区块链后, 再去理解其他形式各样的区块链应用就会容易很多。

 

看到这么多答案,不管是懂的人还是不懂的人,感觉没有一个能够把外层的复杂性剥离, 只谈简单本质的,如下答案,给大家一个真正通俗易懂的区块链解释。 本文提到的区块链技术细节,为了通俗, 就只能说的比较简略,难免有不严谨之处,欢迎大家指正有伤大雅的问题

 

在谈应用之前,最重要的是先理解它的技术本质是什么, 所有介绍区块链的答案里, 都最先提到了区块链不可篡改的特性, 所以第一个要理解的是它到底是怎么实现不可篡改性的。

 

先修知识;

密码学Hash()函数的单向性:  Hash(x) =y 通过y很难找到

哈希链: 假如现在有顺序产生的数据块 A, B , C 那么我们可以这样计算一个hash 注意 || 表示拼接

h0=  Hash(A)

h1 = Hash(B || h0)

h2 = Hash(C || h1)

 

 

h2是我们计算的hash头部,现在来看, 为什么我们管这个东西叫Hash链, 因为h2 的值依赖于之前一系列数据的内容和计算顺序。 假如说现在你知道了h2 别人拿着AB C 他不管是修改AB, C的任一点内容还是AB C的出现顺序,你都无法再次计算出正确的h2 

 

好的, 其实到这里区块链的概念就有点感觉了不是吗, 它其实就是一个哈希链的变种。 怎么变? 添加一个随机数(Nonce

假如现在有顺序产生的数据块 A, B , C 我们来这样计算hash头。 注意 || 表示拼接

h0=  Hash(A || Nonce1)

h1 = Hash(B || h0 || Nonce2)

h2 = Hash(C || h1 || Nonce3)

 

这里我们还添加一个额外的要求, 就是 h0, h1, h2 必须都得是以指定数目的0 bit开头的,例如要求每个哈希值都必须以50开头,则h0,h1,h2都应该是这样的形式(00000*****************

添加了这个要求以后, h0, h1, h2就都不是那么容易计算的了, 因为你不能根据输出的形式来反推输入是什么, A B C又是给定的, 那只能不断更改Nonce来穷举计算, 然后找到一个可以满足要求的Nonce ,使得h0, h1, h2符合要求

到这里大家就知道所谓的矿工是在干什么了, 就是接受广播出来的数据块,然后计算当前最新的哈希链的头部, 当成功计算出了一个符合要求的Hash后, 就告诉所有人,自己找到了, 让别人再去计算下一个哈希头部。

 

其实到这里, 区块链的本质就已经差不多了, 假如网络中大家都默认遵守协议, 只在最长的哈希链后计算新的头部,那么一切都很好, 但是如果有人想搞不一样,那他就得拥有更强的计算能力, 在诚实者都遵守规则的情况下, 自己能够计算出一个链条分叉甚至说直接计算出一个新的链条,让大家都承认。

至于这个难度的证明,中本聪就是建立了一个泊松分布的概率模型, 假设了诚实结点计算出新的哈希头的概率p和不诚实结点计算出新的Hash头的概率q后,算出了一个N值。

这个N值的含义是给出了当一个新的哈希头部 h1 计算出来后,其后追加N个头部(h2,h3,h4....)后,网络才应该承认这个新的头部 h1. 因为此时, 攻击者要想成功发动攻击, 至少需要计算出一个长度大于N的分支, 这个概率在攻击者没有掌握全网算力50%的时候是很小很小的

 

所以到这里, 区块链就已经清楚了,就是一个密码学工具的一种巧妙应用而已,  没什么神奇的

 

那这里思考一下, 不可篡改性其实并不是一个什么神奇的特性,密码学的签名技术就能提供不可篡改性呀, 区块链到底解决了一个什么问题。答案是

 

信任问题 

 

区块链提供了一种方案, 让一个网络中,所有的结点都可以用计算能力投票, 从而保证了得到承认的结果是大多数人公认的结果, 不会因为少数结点作恶,而修改结果

传统的交易建立在什么基础上, 我们对于金融机构的信任, 对于中央银行的信任, 或者对于交易对手的信任, 对于第三方中间人的信任。

这里其实就引出了很多安全技术应用,或者说很多制度建立的本质:信任越多, 需要做的工作就越少。

区块链就是因为不想信任网络中的任意一个单一结点, 所以让大多数人具有公平的投票权利, 而这个投票权利,不是按人头算的, 是按CPU算的, 每个CPU有一票。

 

区块链(采用工作量证明方式维护的公有链)最难以克服的缺点1 效率问题

前面说过, 当你信任的越多, 需要做的工作越少, 就好比你和一个人做生意, 如果你完全信任对方, 那么合同都不用签, 口头约定就行。 如果不太信任, 签一个简单的合同, 规定最重要的事项。  如果特别不信任, 让律师对交易中所有存在风险的地方列出条款,规定责任, 签一个大大的合同。

所以看出来了吧, 信任越多, 效率越高。 信任越少, 效率越低。

区块链也是一样,因为没有单一结点可以信任,通过计算来换取信任。 所以简单的一个承认交易的操作, 需要大量的计算参与进来, 结果是什么, Bitcoin平均交易速度只有7笔每秒。

比特币(公有区块链应用)的最难以克服的缺点2 宏观金融的适应性

金融学和经济学作为人类多年来发展出来的科学具有不可替代的地位, 比特币的流通货币量是存在上限且增加速度基本固定的, 这符合经济规律吗? 显然不符合。 因为学过经济的人都知道, 货币只是对实物财富的衡量, 货币增长速度快于商品增长数量, 则发生通胀, 货币增长速度慢于商品增长速度则发生通缩。

 

比特币(公有区块链应用)的最难以克服的缺点3 匿名引发的安全性

想一想匿名对于罪犯的好处,就不难理解比特币的洗钱风险

比特币作为信息安全学者的发明产物, 现在常被应用于黑客入侵之后勒索的交易手段, 想起来也真是讽刺

比特币(公有区块链应用)的最难以克服的缺点4 用户的易用性

比特币的技术是基于密码学签名技术的, 你的账户安全由你的私钥保护, 如果不添加别的手段,比如在别人那里备份, 或者在别的地方备份, 你丢失了密钥, 账户里的 钱是没有人能给你找回来的。 想想人们丢银行卡, 忘记密码的频率, 这个问题有多大, 不用我说大家也懂

 

说了这么多缺点, 区块链技术和比特币技术就不行了吗? 显然不是,不然那些国际金融机构也不会下大功夫研究它, 但是, 和其他所有的技术一样, 大家都只是在寻找一种能够更高效解决信任问题的手段而已。 金融机构的核心是什么, 交易投资与风险控制呗。 其实也都是围绕信任问题展开的。信任问题的解决在金融机构本来就是耗费了大量的成本的, 只不过很多成本在后台, 或者在人工的耗费上, 很多人看不到而已。

 

总结

 

区块链的技术有望以一个更低的成本解决更广泛的信任问题所以被受人关注

 

最后说点闲话, 本人是硕士阶段出来留学的, 对比国内外,发现中国人的技术分享氛围真的比国外差很多, 不是国内的人水平没有,懂的人都自己掖着 或者说也懒得做清晰的分享, 我想这一点也不能怪我们国人自己, 毕竟是由于人太多, 资源匮乏导致的竞争心态过于强烈。 但是衷心希望, 随着国家实力的进步, 咱们中国人可以有一天不需要再把英语当成学习技术道路上的必须逾越的坎。

 

区块链究竟是什么呢?简而言之,区块链是一种分布式账本技术(DLT, Distributed Ledger Technology)。

 

谈到“区块链”这个概念,绕不开的一个话题就是比特币。比特币大家都知道,是近年非常火的一个“加密货币”,也是这几天被制造勒索病毒的黑客所要求的支付货币。近期比特币的单价甚至已经被炒高到突破一万人民币的水平。区块链究竟是个什么东西呢?区块链跟比特币是什么关系呢?

 

区块链其实是比特币底层的一种技术,比特币这个网络之所以存在,网络上互相不认识的人,能通过比特币网络进行数字货币的转账和交易,在底层就是通过区块链这个技术来驱动的。所有比特币的交易都是记录在区块链这个账本上的。从某种意义上来说,在比特币这个应用中,区块链就相当于现在银行交易系统的底层数据库。其目的都是在于“记账”。虽然把区块链直接称为“数据库”不是特别的严谨,但是为了大家理解方便,我们还是姑且称它为一种去中心化的、共享和加密的数据库。区块链用比较严谨的术语来讲,是一种分布式账本技术。它有如下几个非常显著的特点:1.去中心化、2.可追溯、3.不可篡改。当然,要实现这些特征需要用到很多相关的技术,包括:P2P、密码学、智能合约、共识算法。

 

我们下面通过一个实际的案例,给大家解说一下区块链在实际项目落地中的一些情况。比如IBM最近公布的一个区块链项目,就是和全球最大的跨国远洋船运公司马士基合作利用区块链来提升跨境供应链的效率、节省成本、降低风险。马士基是全球最大的船运公司。其主要业务就是把货物从一个国家运到另一个国家。大家经常都看到在大洋上漂泊的那些万吨巨轮,上面是成千上万个集装箱。马士基的工作就是把一个集装箱从一个国家运到另一个国家,虽然听起来商业模式非常简单,但是要完成这件事情,其中牵涉的参与方是非常多的。最近马士基和IBM一起用区块链做了试验项目,其内容就是利用区块链来追踪记录非洲和欧洲之间的鲜花进出口贸易。

 

在肯尼亚的蒙巴萨,很多花农以种花为生。而大家知道全球最大的花卉交易市场是在荷兰。肯尼亚的花农种出的话,就需要通过马士基的远洋货运邮轮,从肯尼亚运到荷兰去销售。从花种出来到能够上市销售,在这整个过程中,除了马士基的海运服务之外还有很多的相关参与方。比如:这个鲜花能够被种出来出口,花农和出口商势必要跟银行贷款,通过融资来支撑这个业务;鲜花出口前需要经过检验检疫部门的检验;要通过当地的海关的验关。在这个过程中,鲜花需要经过第三方物流公司、陆上的货运公司、到达蒙巴萨港。只有等集装箱运到港口装船后,马士基才开始大显身手。它们的万吨巨轮满载装满鲜花的集装箱从肯尼亚的蒙巴萨港出发,经过十多二十天的海上航行,途经红海、地中海等海域,最后到达荷兰鹿特丹港上岸。上岸以后,之前在肯尼亚发生的一系列事件还要再发生一次,只是这次换成了荷兰的海关、荷兰的检验检疫和荷兰的运输和物流公司以及荷兰的银行等参与方。

 

据统计,在这个历时近二十天的跨国供应链流程中,相关的不同参与方近10个、不同的参与角色大概有30个,而且相关的文档不管是纸质的还是电子的,大概有200多个。所以这中间的参与方和环节非常多,这是一个非常经典的跨境贸易的案例。

 

在这个鲜花贸易的产业链和物流体系中,非常重要的一个方面是作为货物的鲜花本身的流动。伴随鲜花的流动,还有相应的这些文档的流动,这就是我们常讲的物流和信息流。当然,因为牵涉银行的贷款融资,还有现金流。这就是物流、信息流和资金流的三流合一。在传统的解决方案中,所有的相关参与方(生产商、销售商、银行、港口、海关、物流公司、运输公司、海运公司马士基),各家基本都有自己的业务系统,相关的数据和信息都存放在自己的数据库。由于其对业务的极端重要性,在像金融这样的行业里,这类系统甚至被称为核心系统。在我们这个鲜花跨国贸易过程中,跟鲜花相关的信息和文档,它可能会存在与不同参与方的各自不同的数据库。这些数据库和业务系统,在一定的程度上有部分的对接和整合。但是,在传统数据库和B2B场景中,这类跨系统的整合相对来讲是比较松散的,而且也存在着一些不可避免的缺点,比如:流程周期比较长、环节多、透明性差;有些环节可能还没有数字化,甚至需要人工操作,效率很低;数据存在于不同参与方的数据库中,容易出现数据不一致导致的争议;数据本身的安全性和被篡改的风险较大,导致参与方之间出现信任问题。区块链技术的引入,就是通过利用密码学保护的共享和同步的账本,以 “去中心”或者 “弱中心”的方式,使得数据和资产在不同的实体之间的共享和流动过程做到透明、可追溯和不可篡改。

 

在上面提到的鲜花跨境贸易的案例中,鲜花出口要有相应的检验检疫的文件和各种进出口证明文件,只有这些齐备以后,海关和检疫部门才能批准它的出口。鲜花在货运公司被装上集装箱,会生成相应的货单、经过海关的通过程序,又有相关的报关文件等等,所以之前我们提到:这个流程中会有两三百种不同的文档要跟踪处理。很多文件在整个跨国供应链流程里面可能是多方都会去用到的,不管是去跟踪、去查看,还是去审批。在传统技术实现中,这种多方参与的场景不是说完全无法实现。但是常常实现效率比较低、参与方之间的信任比较难以建立、数据的的隐私性、安全性保障得也不是特别好,安全顾虑和隐患都比较大。引入区块链技术以后,相当于大家一起来维护和更新同一个共享的数据库账本。所有的参与方,都拥有和更新自己的一个Copy,相关的数据和文档都会写入共享账本。P2P技术保证了这些账本的内容同步、密码学的机制保证了数据的隐私性和不可篡改、智能合约机制提供了业务逻辑的自动执行机制。

 

回到我们的例子,在整个贯穿近20天的跨国物流运输的过程中,由于所有与货物相关的数据和文档都是随时写入区块链的,而区块链的各个参与节点的数据又是保持同步的,因此相关的参与方,不管是生产商、销售商,还是海关、银行等,都能随时随地了解掌握货物的位置、状态、甚至是温度、湿度等信息(可能需要GPSRFID、物联网等技术)。在交货以后,相应的支付、结算工作,可以利用区块链上的智能合约自动实现,这样,就能比传统方式相对更高效的实现,做到账期的大大压缩,甚至可以做到接近实时的支付结算。这些区块链技术带来的好处,正是马士基选用该技术来开发新一代跨境供应链系统的根本的原因。

 

通过以上这个例子,大家可以看到区块链在商业应用中的价值。正是基于这样的原因,区块链技术在全球范围内的发展如火如荼,影响力和关注度都非常高,未来的发展前景一片光明。除了供应链场景,区块链技术还可以广泛应用于金融、身份认证、数字版权、公证和医疗等众多应用领域。

 

先讲个小故事。说有这么一个岛,叫做雅浦岛(Yap),位于太平洋西部加罗林群岛中,这个岛上一共只有数千人,这个岛估计没几个普通人知道,然而对于经济学家来说,这个岛上的货币体系则相当有启发意义。

 

这个岛上的货币叫做“费币”,不是“废”,而是“费”。这种币有个什么样的特点呢:都是又大又厚的石轮,从 1 英尺 12 英尺不等(感谢

@lixin liu

 大佬的指正),中间有孔洞。

 

就像这样。

 

这种币,我猜没法放在口袋里兜着到集市上买东西,但实际上岛上的居民有很频繁的交易,他们是怎么使用这种币的呢:通过在币上记账。交易过程一般都是债务互相低效的过程,账款通常留待以后的交易中进行转结。

 

即使到了最后的清算时刻,也几乎没人会去搬这个币,毕竟吃饱了也不能瞎干。当地人只是在上面做标记,以显示所有权的转移,却无须持有(搬到自己家门口)。

 

甚至有的币偶尔需要运输被掉进海里,人们也承认这块石币的价值不应该受到影响,William Henry Furness 讲了一个例子,说有一家人,比较有钱,不过他家的币爷爷辈就丢了,孙子都没见过这个币,但依然自信地认为自己家就是这么有钱。

 

这个故事说明了什么呢,「也许货币不是一种商品,而是信用和清算构成的一套记账体系」。

 

而区块链,就相当于这个账本,区块就相当于这个账本的一页,区块中所承载的信息,就是这一页上记载的交易内容。

 

以比特币为例,大约每十分钟就行一次「算力竞赛」来竞争这个记账的权利。就好比说,你的算力牛逼,算得多,就像肌肉更结实,更会打,我们都服你,让你来记这个帐,即向区块链这个总账本写入一个区块(注意不是区块里的内容)的权利。

 

不过需要说明的一点是,计算能力只能决定赢得竞争的概率。就好比说,一共有若干张彩票,算力多的可以买更多张提高中奖概率,然而买得多的人,也不一定最后就中奖了,毕竟就像太极能够一打十嘛(滑稽)。

 

算力竞争通过工作量证明机制(Proof of WorkPoW)来判定。另外还有权益证明(Proof of StakePoS)、沉淀证明(Proof of DepositPoD)等。

 

然后,根据比特币的设计,每轮竞争胜出的人就可以获得一定数量的比特币奖励。这就把竞争记账机制和货币的发行结合在一起了,哇,是真的优美。

 

所以说区块链其实不等同于虚拟货币,更精确的说法是:由于在创造比特币时,并没有现成的、可以支持比特币系统运行的底层技术架构,所以中本聪创造了区块链。所以说,虚拟货币只是区块链的一种应用。

 

而这个公开、透明、几乎不可能篡改的去中心化大账本其实还有很多其他的应用,比如媒体、社交、交易,甚至医疗出版等等。

 

最后借 Robert Wolinsky 的话给我们学经济学的吹一波NB:要了解区块链(比特币)的内在优雅,不是软件使得比特币如此有效,而是经济学。(逃

 

关于这个问题,大家技术层面上已经说了不少,网上也有很多文章,但对于普罗大众来说,要理解这个技术性问题还是比较难。在这里我尝试从经济学和常识的角度说一下自己的理解,看能不能让外行人明白个大概:

 

区块链:一个颠覆旧模式的新技术

 

就像人们很容易忽略看不见却倏忽不可或缺的氧气一样,人们也经常会忽略市场经济中一样至关重要的东西,这就是“信任”。

 

假如没有信任,任何交易都不可能成立。你到菜场买菜,如果你怀疑蔬菜中农药含量过高,你就不会跟那个菜贩子交易;你到小店买瓶水,假如店员质疑你给的是假钞,就不会把水卖给你。

 

传统小农经济是熟人经济,交易规模仅限于村镇范围内比较熟悉的人们之间,出了交通因素外,“信任”也是很大的因素。一旦超出熟人范围,信任成本急剧增大,将阻碍交易的发生,限制交易范围的扩大。此外,不同种族、民族、文化、宗教信仰等等,都会形成信任的鸿沟。

 

陌生人之间由于缺乏相互了解,缺乏必要的信任,交易难于发生。市场经济却是大量发生在陌生人之间。市场经济之所以发生、发展,在于诞生了新的机制,解决了陌生人间的信任问题。

 

到目前为止,解决信任问题的最重要的机制,就是“信任中介”机构和模式。你和陌生人间都信任的第三者是信任中介,政府是信任中介,银行是信任中介。你把辛苦生产出来的商品卖给一个陌生人,收到几张花花绿绿的纸钞,如果没有发钞银行的信用、政府权威的保证,你是不会接受的。

 

到了如今全球村时代、互联网时代,你把商品卖给甚至永远不会见面、千里之外的陌生人,没有信任中介的保证,交易更是不可能发生。支付宝承担起信任中介作用,所以淘宝等电商在短短十几年间快速繁荣起来。

 

信任中介在整个庞大的交易体系中,扮演着一种中心化的重要角色。这是一种中心化的机制或模式,已经存续了几千年,帮助人际间降低信任成本,从而促进交易的发生、交易频率的增加、交易范围的扩大。

 

然而,信任中介本身也是需要成本的,而且常常还很巨大。设想一下:每年交给政府的税收,占到一般人收入的30~40%;如今最赚钱的行业是哪个?金融服务业;拥有支付宝的蚂蚁金服年利润超过百亿,马云成了中国首富。所有这些现象反过来想,对于普通人来说,就意味着极为庞大的信任成本。(当然交易成本中不全是信任成本,但信任成本占了很大一块。)

 

如果有什么办法,能取消或者大幅降低这种信任成本,那么普通大众的交易费用可减少,可享受的福利可大幅增加。在互联网时代,区块链技术上场了。

 

是的,区块链本质上是一种解决信任问题、降低信任成本的信息技术方案。区块链技术的应用,可以取缔传统的信任中介,颠覆传统上存在了几千年的中心化旧模式,在不需要中心化信任中介的情况下,解决陌生人间的信任问题,大幅降低信任成本。

 

这也是通常几乎所有关于区块链的介绍文章中,都会提到的“去中心化、去信任”的意思。但是“去信任(trustless)”的说法容易误导,会让普通人感到莫名其妙,因为任何时候的交易都必须基于信任。实际上,把“去中心化、去信任”,理解成“去除信任中介”,就会容易明白得多。

 

区块链技术所改变的,不是去除信任,而是将传统上交易中对中心化信任中介的信任,变成对区块链系统本身、对于记录在区块链上的数据的信任。基于区块链技术的交易模式中,不存在任何中心机构,不存在中心服务器。所有交易都发生在每个人的电脑或手机上安装的客户端应用程序中。

 

假如未来普遍使用区块链技术,今后你不用再跑去银行证明你的收入和资产,也不用跑去派出所证明你是否已婚,不用让单位人事证明你的雇佣关系,也不用再去敲没完没了的红色公章和看各种难看的脸色……所有这些都记录在不可篡改的区块链上,在你需要和授权的时候,似乎全世界都能成为你的证人。

 

这是如何实现的?这涉及到技术层面,说来话长,但简单地说,从区块链技术的第一个应用(所谓的区块链1.0),也就是大众比较熟悉的比特币(Bitcoin)的工作原理可以大致明了。

 

区块链的概念最早于2008年在比特币创始人,中本聪的论文《比特币:一种点对点的电子现金系统(Bitcoin: A Peer-to-Peer Electronic Cash System)》中首次提出。区块链可以理解为一种公共记账的技术方案,其基本思想可以这样理解:通过建立一个互联网上的公共账本,由网络中所有参与的用户共同在账本上记账与核账,每个人(计算机)都有个一样的账本,所有的数据都是公开透明的,并不需要一个中心服务器作为信任中介,在技术层面就能保证信息的真实性、不可篡改性,也就是可信性。

 

数据的不可篡改性至关重要。因为系统会自动比较,会认为相同数量最多的账本是真的账本,少部分和别人数量不一样的账本是虚假的账本。在这种情况下,任何人篡改自己的账本是没有意义的,除非你能够篡改整个系统里面大部分节点。对于一个由成千上万个、分布在全球各个角落的客户端组成的区块链系统,除非某个人能控制世界上大多数的电脑,否则不太可能篡改这样大型的区块链。

 

在这种情况下,在区块链上记录的每一笔交易,都保持真实可靠,同时公开透明,能够被其他人查看(但交易者个人或机构可以是匿名的),所以就形成了一种不需要对陌生交易对手了解和信任,只需看到区块链上交易对手的货币、资产等本身是可信的,就可以放心地交易。这里不需要任何信任中介,也就是所谓的“去信任”的真实含义。

 

因为区块链具有可大规模扩展、数据公开透明、以及因为每个客户端数据一致,即使部分客户端被毁也不影响数据安全的可靠性等技术特点,特别是能有效解决陌生人间的信任问题,所以这个技术可推广到所有可以数字化的领域,比如数字货币、支付清算、数字票据、权益证明、征信、政务服务、医疗记录等。可以说,区块链技术如果发展起来,将来会跟每个人息息相关。

 

比方说,一个圈子里有10个人,每个人都有一台电脑和一个自己的签名,每台电脑里都有一个账本,里面记录了这10个人的余额和交易;每次圈子里的人做了一笔交易(转账)的时候,就要更新所有电脑上的账本(10份账本),10份账本时时同步来确认交易完成。

 

这个账本就是区块链。

 

账本是一页一页的,每一页写满了交易记录,一页页堆在一起成了一本本子就是账本;区块链是一块一块的,每一块写满了交易记录,连在一起成了一条链就是区块链。

 

比方说,甲转给乙100元,就在10台电脑里的账本上都写上:XXXXXXXX日甲和乙做了这么一笔交易,甲转给乙100元。这样一来,圈子里的人都知道了甲的钱少了100,乙的钱多了一百。

 

每个人想要知道甲还有多少钱,不需要去银行查账,只需要查自己那本帐就知道了;两个人想要交易,不需要银行,直接可以转账,等待圈子里的每个账本同步就行了。不需要通过中心权威机构确认和查询,这叫去中心化;

 

每个人都能通过电脑看到所有人的交易记录(转账记录),这叫透明性;

 

圈子外的人可以看到账本,只要你复制了他们的账本并且有一个自己独有的签名就可以加入圈子了,这叫开放性;

 

如果谁想耍赖,比方说甲硬说自己没给乙汇100元,还把自己的账本给改了,这没用,其他9本账本都说他汇了。除非甲篡改了6本账本,不然他就无法抵赖,这就是信息的不可篡改;

 

人跟人之间的交易,不需要相互的姓名、身份证号等等一堆个人隐私的东西,只要你的签名就行了(这个签名只是一串独一无二的数字字母组合,跟个人信息无关),这就是匿名性。

 

目前最大的圈子是比特币圈子。还有一些比较大的圈子,如以太坊、莱特币等。

 

先说结论,A股目前没有真正的区块链。迅雷勉强算是在玩区块链,但在美股。360刚刚宣布进军区块链,它是有可能玩起来的。另外中青宝、深科技等公司做矿机的,勉强算区块链的范畴之内。恒生电子则有可能会做出第一批基于区块链的金融软件。

 

那么,什么是区块链?

 

区块链的定义比较简单,就是分布式数据存储、点对点传输、共识机制、加密算法等技术的应用。最典型的是2009年发明的比特币。

 

简单讲,与普通技术的区别,就是普通的技术会把一个文件存放在一台电脑上,高级点的技术会放在服务器上,而区块链会把一个文件存储在所有终端电脑上,每台电脑上都有这个文件,还是加密存储的。

 

这段话是区块链技术的核心,可以模拟一个场景:

 

我们现在网购的时候,要先把100块钱打给支付宝(或者微信或者网银),我的支付宝账户减掉了100块钱,然后支付宝再把钱转给卖家,卖家的支付宝账户增加了100块钱;基于区块链技术的支付是什么样呢?账本在每个人的电脑上,我声明把100块钱给卖家了,而且这个声明是所有用户都接收到的,这个支付操作不需要支付宝(微信、网银)参与。卖家担心我不承认怎么办?不用担心,因为网络里有这个声明,所有用户都知道我给了他100块钱,这样所有人的电子账本上都给我减去了这100块钱,给卖家加了100块钱。

 

去中心化、加密化是区块链的重要标志,因此区块链技术可以从技术上保证绝对安全。

 

由于去中心化,没有任何机构和个人控制,所以比特币在洗钱方面应用广泛。同时,由于比特币的兴盛(早期几千个比特币可以换一个比萨,现在一个比特币接近2万美金,我是在2000人民币的时候开始研究比特币的),也出现了基于相同技术的山寨币,比如莱特币、以太币等等。

 

国内第一家应用区块链技术的知名公司是迅雷,由于迅雷做下载和影视,因此需要极大的服务器空间和带宽,后来迅雷通过区块链技术,搞了“迅雷赚钱宝”(现在新款叫玩客云,给客户兑现玩客币),将其中相当一部分成本转移到了使用“玩客云”的用户设备上,这种设备用客户的网络、电费和硬盘,24小时在线帮迅雷存储信息,只需要付给客户一点点费用,这样大大节约了服务器和带宽的投资。其实这才是真正的区块链应用。

 

通过区块链的技术定义以及实际应用案例不难发现,这个技术本身没有什么太大意义,而且是2008年起就存在的老技术,可以做任何事情。有用来洗钱的,有用来节约带宽的,美股还有家用区块链卖水果的,一夜涨了50%

 

所以这波热炒更大意义上是纯粹的概念炒作,后续还会有更多热衷炒作的公司跟进。只要我乐意,甚至可以用区块链技术生产卫生巾。

 

区块链本身是一种数据存储技术,与它的前辈们一样,不是什么非常特别的技术。我没听说当年关系型数据库出来的时候对市场造成多大的震动,为什么区块链技术就如此受追捧了?美股市场的炒作逻辑其实是基于比特币期货的上线运行,A股的炒作逻辑,就有点让我迷茫了。

 

当然,要牢记一句话,市场不会错。我们没必要去分析市场对区块链的热捧背后的逻辑是对还是错,但是要看清楚所有从事区块链板行业的真实情况,它是真的有这样的技术储备和行业应用场景,还是完全炒作个噱头。

 

一、区块链的应用方向

 

由于分析师们对于区块链技术大多也一知半解,导致目前各机构、股票软件对区块链板块的成分股定义不同。以wind为例,我们挨个看看这些所谓区块链业务都是具体做了些啥:

经过初期的爆炒后,区块链概念也开始分了方向。区块链的应用包括以下几个方面:

 

1、矿机生产商。

 

这是比特币暴涨最大的受益者之一了,比特币的产生又叫做挖矿(一种专业算法),是需要专业的挖矿工具(定制的专门用来生产比特币的电脑),因此矿机生产商的利益和比特币的价格息息相关。

 

20168月,鲁亿通尝试收购一家叫做嘉楠耘智的公司,最终未能如愿。

 

2017年嘉楠耘智申请在新三板挂牌,嘉楠耘智的唯一业务就是生产矿机,它的矿机品牌是阿瓦隆,是世界第二大矿机品牌。

 

有一家港股上市公司也在做矿机,叫宝德科技,它的矿机虽然不如嘉楠耘智销量大,但也渐渐开始打开市场。

 

宝德科技是A股上市公司中青宝的大股东,因此作为第一类区块链受益公司,中青宝没有出现在wind的区块链概念股里我很诧异。

 

世纪云芯也是一款比较著名的矿机,而深科技是世纪云芯的代工商,深科技2016年营收150.6亿元,其中代工收入高达78亿元,因此深科技是妥妥的A股的矿机龙头。

 

除了直接做矿机的企业,华天科技也从事矿机的芯片封装业务。这都是A股直接和矿机产业相关联的企业。

 

A股中造矿机的企业不多,但碰瓷矿机概念的却不少,比如壹桥股份,这家公司并不生产比特币矿机,而是生产“竞斗云矿机”,这是什么鬼?其实是其移动游戏子公司开发的一种模仿迅雷云的平台+设备。神州泰岳是生产猫矿机的,卓翼科技是和迅雷合作生产迅雷赚钱宝、玩客云的。

 

由于比特币价格起伏不定,导致矿机的价格波动幅度也比较大,时不时还会赶上抛售,由于矿机的主要成本就是显卡(所以美股显卡商的股价都上天了),因此显卡商的价格对矿机影响也比较大(具体行情闲鱼二手看显卡价格即可)。

 

2、软件商。

 

区块链技术本质上是一种数据库技术,软件商从事区块链技术非常简单,几乎瞬间就可以立项开发出结果。不过区块链技术的应用场景其实不是太多,所以目前软件商从事这方面转型的并不多,也没有太大必要。同时,由于区块链技术主要特点是去中心化和安全,缺点也很明显--就是慢,所以在真正的大型商业化应用中,除了比特币及各种山寨币的应用外,并不常见。

 

恒生电子的实控人是马云,作为阿里系的软件商,把蚂蚁系列的金融服务改造成区块链技术是完全必要和可行的,早在2016年,恒生电子就发布了《恒生电子区块链技术白皮书》。恒生电子早就积累了相关的技术储备甚至很可能已经有了初步成型的系统,所以这才是真正的区块链概念股。

 

3、使用区块链作为底层技术的应用公司。

 

这种公司可能是生产卫生巾的,可能是卖水果的,但是它的应用系统的底层技术采用了区块链。

 

比如易见股份,它的业务系统的数据库是区块链技术大神IBM给做的,确确实实是基于区块链技术(虽然就是TMD一个分布式存储的数据库系统)。

 

4、碰瓷党。

 

不多说了,每个新型概念都会有碰瓷的。无论是太阳能还是机器人还是P2P... ...A股这种例子数不胜数。

 

比如御银股份,其实是个生产ATM机的,你说它能用区块链干什么?生产比特币提款机嘛?中国是禁止人民币比特币交易的,它要这么干可以退市关门了。之前有个新闻推动了御银股份的股价上涨:我国央行1月份表示,将争取早日推出央行发行的数字货币,区块链即为重要支撑技术。但是实际上,数字货币和区块链技术不完全是一回事,区块链的核心技术是去中心化,央行的数字货币虽然号称基于区块链技术,但是很显然是要中心化。所以,这是个典型的碰瓷党。

 

二、区块链的发展前景

 

目前区块链概念已经爆发,实际应用场景却不算多,国内真正用来进行核心业务开展的,也就只有迅雷一家。

 

1、中心化的去中心化

 

比较搞笑的是,区块链的核心技术是去中心化,但在实际应用中,作为区块链的最大应用--比特币,竟然97%的比特币集中在4%的玩家手里。如此高的集中度,连传统货币都自叹弗如。

 

技术上的去中心化最终结果却导致了实际上的高度中心化,这样的场景,也不难理解为什么巴菲特对比特币表示不屑。更有研究学者表示,这是一个典型的庞氏骗局。

 

比特币定位为流通货币,确实是起到了一定作用的。比如,洗钱,又比如,跨国黑市交易... ...中国限制个人外汇交易量后,许多地下资金通过比特币流出;朝鲜军火交易不少也是经过比特币... ...绝对安全的货币带来的竟然是不安全的交易场景。除此以外,比特币成为了被爆炒的“收藏品”。

 

中国为什么禁止比特币交易,就不难理解了,那么中国为什么不禁止挖矿呢?

 

壮观的矿场

原因也很有趣,70%的比特币是中国的矿场挖出来的。由于耗电量巨大,矿场通常位于电力非常便宜的地方,比如内蒙的风电场附近、四川的水电站附近,甚至有的矿场自建水电站。而这些地方,往往是“弃电”区域,由于电力发展不均衡,许多风电、水电不能很好的和国家电网同步,被迫弃电。而矿场则最大限度的利用了这些弃电,从而产生高额的效益,再源源不断的输出比特币,兑换成外汇。

 

2、不安全的安全性

 

从技术上看,区块链的加密技术是非常强悍的。但是安全的技术一定带来安全的产品吗?以比特币为例,由于它的去中心化,中国的央行是不承认它的,你无法拿着它去银行兑换出一分钱,你只能从承认它的用户群体里兑现。

 

这就是个有趣的游戏了,如果这个用户群体哪天不承认了呢?会不会有这个可能呢?

 

除了比特币,全球各地雨后春笋般的冒出了几百种山寨币,都纷纷打着区块链技术的旗号,甚至中国也有山寨币发行(中国禁止民间铸币权,因此100%是非法的),每次比特币打喷嚏的时候,一大群山寨币都会崩盘,中国的山寨币被公安部门查封。

 

由于去中心化的货币不被央行承认,这种货币的安全性其实是水中月,一纸行政批文,就可以把其变成一文不值的数字。

 

当然,国际上许多国家开始渐渐部分承认比特币的货币属性,比如欧盟承认这种货币,比如美国开始进行比特币期货交易。但是,一旦世界局势发生变化,当比特币的货币属性被大规模非法使用以后(如恐怖组织买枪),很显然是很容易受到各央行联手抵制的。

 

3、技术对产业的促进

 

与传统数据库技术相比,区块链最大的优势是去中心化加密存储,但是其效率并不算高。因此大规模的应用场景分两大类,一类就是迅雷这种高度消耗带宽通过区块链降低成本的;另一类就是对于信息安全要求极高但对速度要求不高的金融技术领域,比如恒生电子在研究的范畴。

 

从技术方面看,国际区块链的技术老大是在分布式计算领域深耕数十年的IBM,而国内区块链最终的统治者依然还会是BAT,它们早就实现了区块链的技术储备,一旦应用场景成熟,推出区块链的产品几乎是分分钟的事。

 

对于上市公司财报的分析,欢迎通过我的公众号进行咨询。

 

首先,我们明确两点:

 

(1) 区块链不是比特币,只是比特币将这个概念普及了世人。

 

(2)    区块链只是一种记录方式。人类最早的记录方式有结绳,而后有了羊皮、木片,后来又有了笔和纸,到了现代又有了电脑、数据库,究其本质,区块链只是人类记录方法的演变到现在的一个新形态,它依然是一种记录数据的方法。

 

以下,节点代表某个人、某个机构、某台电脑等一切具有计算能力的个体。

 

区块链要解决的问题是让这个记录方式能被所有节点共享的同时不被任何节点所控制,所谓控制,意味着拥有随意添加、修改、删除记录的能力。而一旦任何存储的数据拥有了这个属性,则就有了很多想象空间。譬如说大家的账本记到一块儿,谁也没法赖账。

 

以下,我们着重用通俗易懂的方式解释区块链如何具备“不被任何节点所控制”的属性。

 

大家都知道超级计算机的概念,正如F1方程式赛车一样,超级计算机的榜单就是很多国家或者企业秀自己计算能力肌肉的地方。

 

拥有超级计算能力意味着什么?大家都听说过邓稼先那个年代造原子弹演算出来的草稿纸都是一屋子一屋子的。而拥有超级计算能力意味着可以更快地模拟原子弹爆炸、大飞机制造中的空气动力等等很多“大场景”,从而更快地得到计算结果并进行下一步工程迭代。

 

任何一个国家、企业、组织的计算能力都是有限的,要不然,大家还比什么比?

 

既然世界上的国家、企业、组织等的数目是有限的,那么这个计算能力的总和也是有限的。

 

那么,我们总有办法创造一道足够难的"算术题",使得这道“算术题”不能很快被全球的所有节点解开。因为“算术题”可以任意难度,而全球的计算能力是有限的。大家解题的速度快了,咱就提升题目难度,如此反复。硬件的发展速度再快,也跟不上调整题目难度的速度,毕竟这个调整只是参数的改变。

 

提升算术的复杂度是件简单事,那么有没有办法使得这个难度提升的过程是可控的呢?

 

如果有,那么意味着,如果全网算出上个题的时间是5分钟,若想下一个题解出的时间变为10分钟,参数一改即可。当然,10分钟是个预估的时间,毕竟你无法保证是不是某个节点突然运气变好,或是网络上又加入了新的节点。

 

答案,有。

 

让题目难度可控还有另一个要素,即:每个节点都得苦苦计算才能得到正解,运气成分降到最低。毕竟一个题预估10分钟完成但是因为各种因素的影响全网算力只花了9分钟是可以容忍的,但是因为某个节点的运气变得“过好”而变成1分钟或者几秒钟那就不能接受了。

 

运气成分降到最低换做另一句话就是:“随机性最大”。

 

稍微懂点密码学常识的人知道,密码学是构建在随机性理论基础上的。密码学的基石是单向函数(One-Way Function)。所谓单向函数是指一个方程Y=F(X),若知道X,能很快算出Y;但知道了Y,确很难算出X。而若要反推X,只能靠“死算”。

 

密码学的一切都是假设单向函数的存在,而应用密码学的通用办法是构造一个“非常靠近”单向函数的函数,“非常靠近”即指当前没有任何人能通过Y很快知道X,但是谁也无法保证将来有没有人能。

 

MD5SHA1SHA2都是这样的函数。在密码学发展的各个时期充当了单向函数的使命,他们都曾经无法破解,而后因为巧妙的数学方法及算力的提升得到破解(MD5 SHA-1 不是已经早被王小云破解了吗,为什么现在仍然通行?)

 

下面回到正题。

 

单向函数因为无法反推,只能靠死算,故而在区块链上充当了这个“算术题”的使命。那么算术的难度如何规定的呢?

 

假设单向函数Y=F(X)Y的取值范围是0-99999,考虑下面两道题的难度大小:

 

(1) 寻找X,使得Y落到范围0-99

 

(2) 寻找X,是的Y落到范围0-9

 

两道题谁更难?答案 (2)

 

难度相差多少?因为从X反推Y是不可能的,只能随机挑选X来计算Y。从期望上来说题(2)是题(1)难度的十倍。

 

区块链即为一个个用这样的计算力保障的数据块链条。从第一块开始,每一个区块依照一定规则收集数据,然后将这些数据附上一个值,使得形成的数据块经过类似的单向函数计算后的结果落到一定范围内。通过估算全网的算力以及控制结果范围的大小,来保障符合要求数据块在足够长的时间内才能被找到。这个计算结果会被下一个区块包含,而这样形成的链式数据结构则称为区块链。

 

为何这样的记录方式很难被篡改呢?

 

就具体一个区块来说,因为该区块经由庞大的计算网络一起计算得出,背后有强大的算力保障。因为区块链讲究“先到先得”,谁先算到区块,谁就决定区块。任何一个想篡改数据的节点必须至少拥有同样大小的计算力。所以篡改不是没有可能,你要干得过所有加入网络的计算节点,当这个网络越来越庞大,篡改的难度就越大。

 

另外一个,当区块形成链式,并被当前计算网络接受。此时,越是想篡改旧的区块,难度越大。因为你得把后面计算的区块一并计算掉,因为区块链除了“先到先得”,还遵循“越长越好”,因为越长的链条得到的算力保障越大,也就越不容易被推翻掉,也就越安全。

 

至于如果网络上的区块链出现分叉,如何抉择出谁是主干,谁是分支,这就是后话,本文不想绕晕大家,而是想告诉大家:区块链没有什么神秘性,仅仅是记录数据的一种方法,它的出现是为了让记录的数据更加安全,而这个安全性是由密码学来保障的,所以用区块链构建的货币系统又称密码学币。

 

 

无论在科技圈还是金融圈,区块链俨然成了最热的词汇,没有之一。区块链具有去中心、去信任等核心优点,可以完美地解决共享经济发展过程中的信息不对称、交易成本高、陌生人信任等难题,使得“个体经济”成为可能。基于此,区块链技术,被认为是继蒸汽机、电力、信息和互联网科技之后,目前最有潜力触发第五轮颠覆性革命浪潮的核心技术。

 

在此背景下,社会中诞生了一股区块链热,大家一边倒地对其大唱赞歌。辩证法告诉我们,任何事物都有缺陷,看到事物的正反两面才能理性决策。所以本文中,苏宁金融研究院高级研究员薛洪言(洪言微语)就重点给区块链泼点冷水。

 

|什么是区块链

 

区块链,英文Blockchain,名字带有相当神秘的科技气息,可简单分解为“数据块”和“链接”。每个数据块中包含了一定时间内的系统全部信息交流数据,并用密码学的方法予以了加密;链接是指每一个区块与下一个区块存在链接关系,从而构成了区块链。

 

一般认为,区块链具有去中心和去信任两大特征,简要介绍如下:

 

由于每个区块都含有特定时间内系统全部信息交流数据,因而每个区块都是平等的,且单一区块的损害不影响系统整体的安全性,所以区块链具有去中心特征。

 

同样,由于每个区块含有系统所有信息,使得信息的真实性是可以交叉验证的,只有攻破超过51%的节点才能篡改信息,在一个足够大的区块链系统中,成本极高,可以认为区块链中的信息都是真实的,所以区块链具有去信任特征。

 

大多数人对区块链的认识始于比特币,二者的关系是,区块链是底层技术和理念,比特币仅是区块链目前最火的一个应用而已。

 

也许上面说的还不够通俗,最后再总结一下,你认为区块链是什么?是一项颠覆式的新技术吗?NO!在苏宁金融研究院高级研究员薛洪言(洪言微语)看来,与其说区块链是一项新技术,不如说是一种新的思想理念。区块链中包含的信息加密等技术早已有之,更多地还是理念上的革新,这也是区块链之所以影响巨大的原因所在。新技术迟早会被超越,少则一两年,多则四五年;而革新性的理念才有足够的能量影响到经济社会的方方面面。

 

|区块链有望改变金融系统底层规则

 

在金融领域的应用中,区块链将改变交易流程和记录保存的方式,从而大幅降低交易成本,显著提升效率,被认为在数字货币、跨境支付与清算、票据交易、证券发行与交易、产权交易、客户征信与反欺诈、反洗钱等方面拥有广阔的市场环境。

 

这么好的技术,自然是人人追捧。和很多传统金融人士一样,洪言微语一开始也是抗拒的,认为这东西哪有那么神,并没有专门去做研究。后来随着对金融科技研究的逐步深入,发现区块链是绕不过去的坎,因为无论是智能投顾、大数据风控还是在线借贷,都只是金融业务层面和风控层面的技术创新,并未深入金融体系的底层。金融系统的底层是什么?自然是支付清算、交易规则和系统交互,区块链改变的恰恰是底层规则。

 

所以,纵观国际国内,金融机构对区块链的研究最为积极,没别的,是真的怕了。区块链的去中心化和去信任化特征充分发挥后,还要金融机构的中介做什么呢?估计这也是很多对区块链有了初步了解的人的第一感觉。

 

|颠覆金融体系,区块链仍面临两座大山

 

马克思主义辩证法告诉我们,凡事都有两面,优点越突出,缺陷也就越明显,只是角度不同罢了。区块链颠覆金融体系的两大难题恰恰出在去中心化和去信任化两大优点上。

 

首先讲讲去中心化。先要明确一个道理,中心化必然代表着低效率吗?自然不是的。在特定的范围内,中心化带来的资源集中是可以大大提升效率的,这也是人类进化过程中从个体到村落到部落再到国家的原因。就以银联为例,银联是国内银行业清结算的中心,银联成立后,每家银行只需要和银联对接即可实现和所有银行的交易,若去中心化呢,没有银联,每家银行需要和所有的交易对手去对接,效率孰高孰低?所以,没有必要对中心化一棍子打死,区块链的去中心化特征,注定只能在特定领域(即不适合中心化的领域)发挥作用,怎么可能颠覆一切呢?

 

再者,就是去信任问题。去信任本身没有问题,但是其背后的技术逻辑有很大的缺陷。区块链实现去信任靠的是全民记账,即在每个区块上保留所有的交易信息,以供系统交叉验证,辨真伪。问题来了,每个区块保留所有交易信息,在小的区块链上是没有问题的,但随着越来越多信息的加入,必然导致交易信息的爆发式增长,也会带来信息存储成本的急剧上升。同时,信息量越大,交叉验证所需的时间越长,效率也会越低下。所以,区块链解决了信任问题,但带来了成本的上升和效率的下降。

 

世上原本就没有十全十美的事情,区块链也是如此。

 

作为结语,洪言微语想要阐明的是,区块链作为一种理念的创新,的确有很大的价值,在特定领域也可以产生颠覆式的影响。但当前对区块链一边倒的思维是有问题的,东方智慧告诉我们,“极高明而道中庸”,面对任何事物,保持中庸之道才是最明智的。

 

(文/薛洪言,苏宁金融研究院高级研究员;微信公众号:洪言微语)

 

自打2015年十月参加了万向组织的《区块链-新经济蓝图》以后,感觉币圈子逐渐变得泾渭分明起来,一边是看不惯区块链的比特币死守派,另一边是不带比特币玩的新区块链派,某种意义或者某种程度上来说,都互相觉得对方是low逼,慢慢形成新一层级鄙视链,恩……我站中间。

开刷之前,先抛几个观点:

 

比特币当前市值约为30亿美金,成长空间还很大。

区块链技术的成长性会远远高于比特币。

我爱比特币,如果要加一个期限的话,我希望是……

 

区块链技术从本质上来说,是从比特币中脱离出来的产物,就像孵化小孩子的胎…咳…紫河车类似。在男神中本聪的设想里,他不过是比特币的底层加密协议,而随着201311月过山车事件以后,天朝大肆对比特币妖魔化,主流媒体纷纷禁言,比特币相关都会划上了反社会主义的符号。

 

要怎么才能让比特币找到第二春呢?这个问题困惑了币圈两年之久。冰冻期来临后,大家缩成一团,靠着信念和意念为自己的信仰买单。201311月之前,币圈人气一直都是一个很可怕的暴涨态势,而随着这一波的元气大伤,逐渐抛出局留下来的,要么是有着坚定信念,要么是凭着无懈可击的商业模式,当两者都有时,恩,就成就了比特大陆。狠狠甩开同行,傲雪寒梅,一枝独秀。

 

原谅我插播的小广告。我不打,谁打。哦哈哈哈哈。

 

就在币圈迟迟未能等到破冰期,此时,区块链这一概念仿佛瞬息之间,吹遍了大江南北,大家奔走相告,这无疑也给比特币带来了一丝暖意。

 

讲真,区块链这一阵妖风究竟是怎么刮起来的呢?

 

这还得从201510月份说起。

 

当时《The Economist》一篇名为 The great chain of being sure about things 一文。文中举了个例子,大意是:

 

艾女士居住在洪都拉斯,她住在自家房子很多年,某天,艾女士遭到法院传讯。C向法院申请驱逐艾女士,原来国家产权局登记的是C的名字,而后房屋被拆毁。但后来经过法院查证,房子其实就是人家艾女士的,但不动产已经毁了,艾女士只能默默流泪……

 

新经济学人用这个简单的例子来深刻刻画了当前社会的现状,记录可以随意被篡改的事实,而刚好,比特币能解决这个疑难杂症,那么靠什么技术来保证这样的记录,真实、唯一且不可更改呢?

 

答案呼之欲出。

 

(对文章感兴趣的朋友可以阅读:经济学人:重塑世界的区块链技术 。当然英文好的盆友,墙裂建议大家查看原文,因为译者虽然不会对文章观点愿意进行改动,但翻译时是会有情绪倾向。)

 

201510月万向集团在上海召开了一场《区块链-新经济蓝图》的全球区块链峰会。确实到场了许多之前玩比特币的圈内人士,很多壮士从比特币的泥潭里挣扎而出,摇身一变,成了区块链技术专家。洗白效果给五星,当然这里没有贬义。

 

确实大众看待某个行业的眼光,是很容易【被导向】,正如即使区块链发展的如何欣欣向荣,比特币依旧抹不掉自身的锈迹斑斑。

 

时间来到201511-12月,在北京的金融博物馆举办了几次区块链峰会。内容涉及到区块链或将颠覆传统保险模式?演讲者是保监会的副主席等,当然还有比特币届一哥,豆瓣知乎红人:李笑来。

 

答主私下也得知了银联其实很早就关注了比特币,并积极加入区块链的研讨。后来某司出借银联几台比特币矿机S7U3,用于研究比特币挖矿技术。

 

【区块链数据处理服务器】长这样,你们感受下:

 

20151216 麦肯锡发表一份针对”区块链技术”的研究报告,该份报告语言区块链在金融领域的创新和应用需渡四个大劫:联合实验、固体实验、小型网络、规模效应。

 

20161月德勤和万向区块连实验室在上海联合举办了一场Blockchain Hackathon 区块链黑客马拉松圆满落幕。

 

2016120  央妈在京召开了一堂数字货币研讨会,有消息称要推出央行数字货币。

 

这条新闻让我喜忧参半,喜的是终于央麻麻肯正视我们多年来的努力了,撒花~(不得不推算,比特币的币龄已经7年了!7年啊,同志们,孩子小学都该毕业上初一了!)真是不得不鞠一把泪。央麻正视了数字货币的意义:降低货币发行和流通成本、提升经济交易活动的便捷性和透明度,同时提出要抑制洗钱、偷逃税等违法犯罪行为。

 

酱紫一来,答主夜观天象掐指一算,数字货币监管还会远么? 喝喝。

 

让我忧的是,比特币本身是一种去中心化的支付系统,是不需要可信第三方的,而当下最大的交易可信第三方不就是央麻么?她怎么会做这种自打脸的事情呢?所以结论是,要么该新闻证伪,要么则推断此货币绝不可能是去中心化的数字货币。

2016129 普华永道宣布与比特币公司blockstream 进行战略合作,旨在提供区块链技服务。而blockstream 正是近日来扩容之争的风暴中心。

 

so,区块链技术到底是什么鬼?

 

Blockchain 是一种利用去中心化和去信任方式集体维护一本数据簿的可靠性的技术方案。该方案要让参与系统中的任意多个节点,通过一串使用密码学方法相关联产生的数据块(block)每个数据中都包含了一定时间内的系统全部信息交流的数据,并生成数据指纹用于验证其信息的有效性和链接下一个数据库块。

说人话!

 

|O| ~~

 

好吧~区块链技术其实是一类技术解决方案的集合,是,一种基于计算机加密技术的无可替代的信用凭证。

 

从技术上来说呢,它是一个分布式储存的数据块,每一个块上面都会包含一整条区块链的信息。这也就决定了区块链可以在没有可信第三方的条件下,自证其罪,阿布,自证其信!解决两个陌生人之间如何建立信任机制的问题。

 

要解决陌生人之间的信任,首先得解决信息或合约的特性,以此对应区块链妥妥的疗效:

 

随时提取   ——去中心化特性

不可伪造   ——集体维护监督

不可撤销   ——开源及匿名性

可验证性   ——可分数据存储

 

首先,因为整个网络没有中心统治者。系统依靠的是网络上多个参与者的公平约束,所以任意每几个节点的权利和义务都是均等的,而且每一个节点都会储存这个区块链上所有数据。即使该节点被损坏或遭受攻击,仍然不会对账簿造成任何威胁。

 

也就是说,每个小孩手里,都会有一本完完整整的数据记录。即使某个人忘记或丢失了,除它以外的ABCD任意一个人都能完整的还原出整本数据记录。随时提取的最佳方案是人手一份。torrent就是P2P优加的方案,当我需要时,我可以从最近的节点提取,畅通无阻,当我不需要时,你就安安静静的躺在区块链做你的美……

 

其次,得确保信息或合约无法伪造。账簿在某个人或某几人手上,造假的可能性就非常高,但每个人手里都有一本账簿,除非你说服了整个游戏里超过51%的人都更改某一笔账目,否则你的篡改都是无效的,这也是大众玩家集体维护和监督的优越性。

 

中本聪的做法非常聪明,无法阻止别人花样目的式的伪造,就让伪造成本最大化,这样就极大的规避了大家造假的风险。当然这种风险规避并非100%。(当然不排除未来的傻逼们,出于某种目的,不去在乎伪造成本而去伪造信息。)只是由于比特币或区块链的节点越来越多,伪造的可能性就越来越小。因此,只要区块链上的节点越多,算力越强,那么该系统中的数据就会越安全。

 

所以目前全球五大矿池目前有三大矿池,蚁池、国池、鱼池都在中国,所以海外有些小担心……喝喝。

 

再而,区块链上的信息必须不可撤销,不能随意销毁。比特币的系统是开源的,整个系统都必须是公开透明的,因此某笔交易被全网广播以后,达到6个确认以上就成功记录在案了,且不可逆转不可撤销。所以你打出去的钱,即使后来发现地址打错了,你想要重新重新撤回来,是不可行的。

 

最后,区块链信息必须是可验证的。我可以经过信息提取来判定你的该笔记录是真实的还是伪造的。

 

区块链的机制目前在主要分为两类:posproof of stake)权益证明 机制和pow(proof of work ) 工作量证明机制。

 

 

中本聪要在这个支付系统中自证其信。首先要解决的问题,就是双花,即重复支付的问题。正如现在的法币系统中,如何杜绝假币的问题,主流社会的做法是:通过国家的制定法律法规,通过强制力迫使人杜绝制造假币,而中本聪则用区块链系统本身杜绝了人为因素,完全依靠技术解决双花问题。

艾玛→_→中本聪这家伙太坏了!一点也不给人腐败的机会。

 

比特币采用的pow工作量证明机制,即按照做工作量的多少来获得奖励。这一点带来的弊端是算力很容易集中化。

 

比特币的交易机制是十分钟产生一个区块,意思就是每隔十分钟计算机就打包全网交易进入一个区块。而矿工就是在打包游戏中争夺区块链记账权的人,谁能最快准狠解开SHA256这个数学命题的值,谁就赢得了这个十分钟区块的打包记账权。而这十分钟里的每一笔交易,都会被盖上一个 timestamp —时戳,当然了,矿工的工作不是白辛苦的,一旦谁赢得了打包权,谁就将获得25个比特币作为奖励。

 

所以你也可以将比特币看做是维护公平正义的筹码。

 

中本聪如何做到自证其信的呢?这取决于区块链的工作原理:

广播比特币网络中的每一笔交易,使每个参与者(指矿工)都记录下这笔交易。

每个参与者接收到交易信息后,都要将该笔交易盖上时戳,收入区块。

由于每个矿工都做了工作,谁赢了获得奖励呢?此时参与者们要通过一个计算游戏,谁能最快解出SHA256运算的值,谁就将赢得打包区块的权利,并获得系统的25个比特币奖励。这个数量的设定是每四年减半。(比特币已经到了第七个年头了,这不是玩笑……)

获得记账权的矿工将向全网广播这十分钟内区盖了时戳的交易,其他参与者将核对这些账目

当其他参与者都确认无误后,该区块就确认合法,就进入了下一轮的区块争夺战。多个区块逐渐形成区块链。

 

万能的区块链—之用途?

 

跨境支付。

数字背书。

 

当前接入区块链数字背书的行业:

 

钻石证明—Everledger 这是一个用于钻石证明和交易的账簿。

房地产证明—International Bitcoin Real Estate Association国际比特币房地产协会为不动产权提供区块链解决方案。

股权证明—小蚁,国内项目,由达鸿飞牵头成立,首家使用区块链技术为公司及企业提供股权证明服务。

医疗行业—飞利浦与Tierion合作,为病人提供隐私及敏感数据的区块链解决方案。

娱乐业—PeerTracks 提供音乐使用权的区块链解决方案,用户支付和产权人的收入以数字货币计价。

智慧城市—Factom 公正通与软通动力的合作项目:旨在提供全方位的数据储存、审计和验证服务,内容包括:审计系统、医疗信息、供应链管理、投票系统、财产契据、法律应用、金融系统等等。

 

区块链的掣肘

 

所以,区块链技术虽然红火,但在区块链金融上,还是有些掣肘。

比如区块链作为一个记账系统,如何解决金融体系的底层线下摩擦。

比如比特币在支付方面,当前比特币网络确认的交易是每秒最多7笔,而支付宝每秒则达到上万笔的交易确认。便捷性上来看,的确不如微信和支付宝,这个毋庸置疑,不过侧链和闪电网络正在攻克这些技术问题。

比如银行开户的成本是比较高昂的,但也无法避免,因为涉及到跨境支付,像目前对于不同的机构,做账对不上这些问题,其实都会cover到支付成本上去。而区块链要怎么给出实际的解决方法,都是很现实的问题。

 

答知乎友问。

 

所以比特币凭什么背书?它和Q币有什么区别?

 

加入币圈行业以后,身边就有无数的小伙伴找我辩论。题目往往让我无话可说,比如,为啥比特币有价值,比特币凭什么背书?它和Q币有什么区别?

 

就比特币这种虚拟的加密货币而言,为啥跟Q币有着本质的区别呢,因为比特币不是由某一家企业或某个机构的信用背书的。

 

比特币的价值来自于基于数学体系的自证其信,恰恰是粉碎了传统金融业信用需要别人背书的基石。这一点也是为什么别人会说区块链(或比特币)解决了拜占庭将军问题。其核心意义就是解决了,在匿名情况下的双方如何在战争中不依靠第三方媒介达成信任共识。

 

要理解到这一点,我们得先看看银行的起源。一般认为最早的银行是意大利威尼斯在1407年成立的首家银行,而后,荷兰的阿姆斯特丹、德国的汉堡、英国伦敦相继出现,18世纪末19世纪初,银行才得以发展起来。

 

这里有个很形象的故事说明:

 

在十七世纪,一些平民通过经商致富,有一些剩余财富,他们为了安全,就把金子存在国王的金库里。彼时是没有纸币的,所谓存钱就是指存放黄金。因为那时实行“自由铸币”(Free coinage)制度,任何人都可以把金块拿到铸币厂里,铸造成金币,所以铸币厂允许顾客存放黄金。 但是很不幸,这些商人没意识到,铸币厂是属于国王的,如果国王想动用铸币厂里的黄金,根本无法阻止。1638年,英国的国王是查理一世(Charles I),他同苏格兰贵族爆发了战争,为了筹措军费,他就征用了铸币厂里平民的黄金,贷款给国王。后来1649年,他被克伦威尔砍了头,这就是著名的英国资产阶级革命,详细情况可以参照《英国史笔记(四)》

 

虽然,被征用的黄金最终都还给了原来的主人,但是商人们感到,铸币厂不再安全了。于是,他们把钱存到了金匠(Goldsmith)那里。金匠就为存钱的人开立了凭证,以后拿着这张凭证,就可以取出黄金。很快地,商人们就发现了,需要用钱的时候,根本不需要取出黄金,只要把黄金凭证交给对方就可以了。

 

再后来,金匠恍然大悟,原来自己开立的凭证,居然具有货币的效力!他们抵抗不了诱惑,就开始开立“假凭证”。但是神奇的是,只要所有客户不是同一天来取黄金,“假凭证”就等同于“真凭证”。这就是现代银行中“准备金制度”的起源,也是“货币创造”机制的起源。银行体系可以将信用货币的数量放大,实物货币就做不到这一点。

 

至此,银行已经诞生了600年了,虽然古代银行和现代银行业务上有差别,但本质上就是一个可信任的第三方中介,而这里的可信任是需要打问号的。

 

我们暂且分析下银行业发展的大历史背景,工业革命后,人类进入了工业时代,逐渐的从农业社会进入工业社会,此时社会的生产力是处于一个相对高速发展的阶段,人与人之间的联系还不是那么紧密。当前我们处于21世纪,通过互联网将人与人之间的联系变得紧密,这种联系是质的飞跃。

 

那首歌是这么唱的:以前车马很远,书信很慢,一生只够爱一个人。

 

而现在呢,生产力得到大大解放,人工智能和科技每天都在有新的突破。从1969年美国国防部高级研究计划书ARPA建立ARPANet起,至今互联网发展已经过了47年了。而我们依旧生活在过去600年前的金融体系之中,体制的建立和瓦解是逐步的,但在互联网之后,不得不承认这个触点正在以爆点的方式替代传统体制的更迭。

 

颓然瓦解,或许能成为一个历史意义的词汇。

 

正如上面故事所提及,以及前文中新经济学人艾女士的案例说明:人性是无法违背的。不管作为第三方的信任机构,你是国王也好,金匠也好,还是后来出现的银行也好,在某段时期内,通过制度可以制约人性。但权利带来的后果,必然是无法治愈和根除的人性与贪婪。但对巨大的财富诱惑,人性、贪婪就像渗透在大树里的蝼蚁,一点一点慢慢将制度和信用啃食干净……

 

银行如是,国家亦如是。

 

从当前的技术发展来看,也许智能合同或者人工智能能够让技术来约束人性的臃肿和贪婪,但未来如果发生了区块链黑科技,更加放大和膨胀人性和贪婪,也是要淡定,毕竟人类永远是神秘的且充满了奥秘。

 

所以,区块链技术粉碎的正是信用需要别人背书这个事实,从而自证其信。所以你们不要再问我为什么比特币会有价值了……

 

分两块,你是想知道技术的还是金融的?

金融的不好答。

技术稍微讲一下,首先知道一点bitcoin的背景和金融背景是最好的。

这里推荐张洋的博客的一篇文章来了解,传送门:CodingLabs - 一个故事告诉你比特币的原理及运作机制

 

A想给D付钱,需要经过下图这么个流程,必须经过中心机构O

 

现在有了区块链:

 

这里看到了一个公共总账本对不对?这个的技术实现就叫做区块链,其中中心机构O也不见了对不对?其实不是不见了,是公权力下放到每个人手里了。

第一张图的中心机构O它是有大家的总账的,对不对?我们把机构去掉,账本留下,并且改成每个人都有这本账本,共同维护。以交易者身份使用它,以矿工的身份维护它。

大致是这么个意思,渣图将就看吧。

另外附我的一篇介绍文章(Jan 21st 更新网址):

区块链(BlockChain)的深入介绍--blockchaindev.org

清华大学 电子工程系博士在读

269 人赞同了该回答

前两天有个混金融圈的发小微信问我,现在区块链创业靠不靠谱。聊了几句后我告诉他,区块链靠不靠谱我不知道,但我知道你对区块链有着严重的误解。

 

于是我就简单跟他讲了讲区块链是什么,之后意犹未尽,打算写出来让更多人看到。当然,我个人不是专业学者,理解或许有偏差,力求严谨,但如有错误烦请告知我。

 

我理解的区块链是对以往中心式记账体系的颠覆,也就是实现了『去中心化』。这个概念最早在”比特币之父“中本聪在2008年发表的论文”Bitcoin: A Peer-to-Peer Electronic Cash System“(比特币:一种对等网络电子现金系统)里提出:

 

https://bitcoin.org/bitcoin.pdf

bitcoin.org

所以想了解区块链,就必须了解比特币。而我久仰比特币的大名,于是拜读过这篇文章,也查过一些背景资料。这个回答就基于我的这些有限了解,谈一谈区块链。同时也推荐有能力的朋友,亲自读一读这篇文章。

 

为了便于区块链的介绍,我打算讲一个故事。

 

1:一个公共账本】

假如你现在在上大学,你们寝室是标准的四人寝,除了你之外还有小王,小黄和小白三个室友。平时你们亲是内部的活动很多,于是经常会有人垫付饭钱,车费,还有水电费。你们大家发现,如果每次消费后,都要一一计算交结非常麻烦,于是你们决定采用记账的方案。

于是乎,你们买了一个公共的账本,本次产生消费后,就由付钱的人在账本上记清楚,谁应付给自己相应的金额。如此一来,只要每月月末统一结算即可,大大节省了时间精力。

时间一长,你们发现在纸上记账还是麻烦。于是你们决定”升级“这个账本,改成在电脑种建立一个excel表格,比如这个样子:

但问题是,如果你们寝室里有个人不厚道,偷偷修改账本怎么办呢?

 

例如小王把自己要付钱记在了小白头上。如果这个问题不能得以解决,那这个账本的信用就将会大大折扣。

 

2:每个人都有账本】

 

区块链采用的解决方案就是,给四个人每人都配备一个账本。需要记录时,就由对应的操作人高喊交易内容,广播给寝室里的所有人。

例如,小王高喊,”小王需要支付给小白30  “。然后寝室里其他人听到了,就在各自的小本本上记下,”小王需要支付给小白30 “。

如此一来,就算小王故意使坏,把自己要付的钱记在别人身上,那也只能是篡改自己的账本。这样到月底时,小王的账本和其余三个人对应不上,便能知道小王的账本有问题。

但这个系统仍然存在一个问题,那就是如果小王恶作剧,不负责任的乱喊“小白需要支付给小王100元”。如此一来,很可能会有不明真相的舍友记录下来。

因此,分布式的账本还由一个急需解决的问题,如何确认收到的一笔交易记录是否有效?

 

3:在交易记录后签名】

 

这个问题在纸质帐本里很好解决,那就是在每一条记录后,由需付款的一方加上自己的手写签名,以示自己认可这笔记录。这个思路换到计算机中就是数字签名,所以我们要求每一笔记录后面,都要由需付款的一方加上自己的数字签名。

 

数字签名在这里就不具体解释了,大家只需要知道,帐本系统里的任何人都可以验证数字签名是否正确可信。

 

4:账本的改进,比特币的诞生】

 

上面这个账本还存在一些问题,使得只适合小范围使用,如果扩大到更大的范围,比如整个学校使用,这个时候交易量和用户数剧增,记录就会变得非常麻烦。

比特币正式为了解决这个问题而对前面介绍的账本系统的改进。

4.1改进一:交易单位为比特币BTC

我们之前用的账本里面的交易单位是人民币,但在比特币系统中,我们的交易单位变为比特币。

4.2改进二:讲记账改为事实交易支付

 

之前的账本我们越好是月底结账,而现在我们把交易单位改成了虚拟的比特币,交易也由月底统一交割改为事实交割。而比特币就像是账本上的数字,随时都可以视大家的意见进行”套现“,即在现实中交割。

如此一来,我们就需要确保每个人的账户里有足够的比特币进行交易。也就是确定任何一笔交易的前提就是付款方的比特币账户中有足够的比特币用于支付。

传统银行系统中,银行会记录储户的账余额,判断储户是否能够进行转载。这个很好理解,我在网银里操错向某账户转账一个亿,但我账户里显然没有这么多钱,因此银行系统会认定交易失败。

但比特币系统并没有一个“银行式”的权威中心,所以不能像银行这种操作方式。比特币的解决方案是,每笔交易不以余额为基础,而是以以前的交易为基础。

比如,“小王支付给小黄50BTC”的前提是自己曾经收到过多余50BTC。因此小王的交易记录需要包含自己之前的交易信息,举个例子:

 

小白支付给小王40BTC

你支付给小王20BTC

小王支付给小黄50BTC

我们忽略比特币的源头,及它是如何产生的事,先继续往下看。这个时候小王需要广播的交易信息就是:

 

之前交易:小白支付给小王60BTC,你支付给小王60BTC-->

当前交易:小白支付给小黄20BTC,你支付给小黄10BTC,你支付给小黄10BTC

这里说一句,“你支付给小王20BTC”中的20BTC是一个整体,无法分割,因此无法只从中拿出10BTC交易。

 

我从Bitcoin Explorer上找个例子,见上图。这是一个实际交易记录,用户A从自己的62.69BTC中,转给了用户BC分别0.0480.498BTC,然后把剩下的62.15BTC转给了自己。

 

4.3改进三:不留证明,改留比特币账号

 

如上图,用户A并不用留下自己的名字,而是用一个字符串来代表自己进行交易:

 

1H6ZZpRmMnrw8ytepV3BYwMjYYnEkWDqVP

同理,用户BC也是如此,只留下了一个字符串。所以你们室友在帐本里都不写名字,而是写下跟各自对应的字符串,即比特币账户。虽然对于你们四个人的寝室这纯属脱裤子放屁,但如果对于规模更大的系统,比如前文提到的整个学校而言,这种操作可以极大提升隐私性。

 

我们只能知道每个账户,而无法知道谁拥有这个账户,这就保证了隐私性。

 

5:交易记录的存储:区块链】

 

从这一节开始进入正题。前面我们提到了这个账本是分布式存储的,每个人都有一个自己独立管理的账本。

 

当这个账本系统变得很大时,一致性问题就必须要考虑。比如,如果你有室友在交易记录发布时不在寝室,那么他就错了这次消息,使得这次消息不会出现在他的帐本里。

 

换回比特币系统,也就是部分电脑可能处于关机或者未联网状态,会错过部分交易。此外,还可能会有黑客入侵部分电脑,篡改交易记录。

 

此外,还有一个更严重的问题就是,实际网络拓扑非常复杂,链路质量的随机性很大。因此,如果用户A(假设账户里有10BTC)连续广播两条相互矛盾的消息,比如:

 

交易信息1:用户A支付10BTCB

交易信息2:用户A支付10BTCC

 

有的读者应该会觉得,那我们就采信先收到的交易信息1,忽略与之矛盾的脚印信息2不就行了。

 

但问题是,因为网络链路的复杂性,所以很可能存在部分用户先收到交易信息1,又有部分用户先收到交易信息2。如果依靠先后顺序辨别有效性,那么就会存在不同用户记录的交易信息不一致。

 

为了解决这个问题,中本聪提出了区块链的概念。

 

每个用户如果愿意,都可以整理自己从网络中接收到的交易信息,然后检查其是否合理(每笔交易是否由足够余额?数字签名是否正确?)后,再将交易记录打包成一个区块。

 

因此每个交易记录都是以区块的形式存储,然后再广播到系统中的其他用户中。而区块之间相互连接,形成一条由系统内全体用户共同维护的区块链。

 

因此其他用户收到广播的区块时,就会把这个区块加到自己维护的账本,也就是区块链的尾部。

 

但如果只是这样,并没有解决任何问题。互联网节点遍布全球,广播过程也需要时间,因此肯定会存在不同节点收到不同区块存储的问题。

 

以此图为例,设备A和设备B几乎同时发布了自己的区块,两者的区块并不相同。很好理解:

 

红色区域中的用户离设备A近,会先收到设备A发的区块甲;

蓝色区域中的用户离设备B近,会先收到设备B发的区块乙;

然后,不同的用户会将不同的区块加入到自己维护的区块链尾部,生产不同的区块链。

如此一来这个网络就乱套了。为了降低传播时间的影响,一个简单粗暴的方式就是从系统设计中就限制区块生成的速度。比特币系统的核心思想采就是用算力限制区块的生成速度。

 

比特币系统要求,每个用户在发布新区块前,必须先完成一个任务。这个任务就是:

根据前一区块的一些信息加上新区快的一些信息,生成一个字符串S

选择一个字符串B,与S合并成“BC”,且要求“BC”的哈希映射满足某个条件,比如映射结果的前72位为0(概率:2^(-72));

上面的第2步,除了一个个试以外是没有捷径的,而且结果是否满足要求可以快速试出。举个例子就相当于给你一个银行卡,让你挨个试密码。那你没有任何办法,只能000000-999999挨个试验,最后虽然能试出来,但也会花费大量时间。而且你把试出来的结果告诉别人后,别人可以很快验证你的结果是否正确。

 

时间恰好是我们宇宙中最稀缺的资源。因此我们可以调节这个难度,比如使得系统中所有平均每20分钟才会有一台设备完成要求的任务,猜出符合要求的字符串B。如此一来,撞车的概率就会大大降低。补充一句,这个难度是不断调节的,以适应硬件算力的提升。

 

虽然概率大大降低,但仍然无法排除存在撞车的概率。因此,区块链验证中最核心的思想就是

 

——相信最长的区块链;

我们拿上图举例,在原有的到区块链N的情况后,短时间内出现了两个不同的区块,分别用蓝色和红色表示。

如此一来,就会有:

 

部分用户的区块链:原区块链+蓝色区块

部分用户的区块链:原区块链+红色区块

 

这个时候,我们需要做的只有一件事情,那就是『等待』。因为同时产生区块的小概率事件,总不可能连续发生。这样我们只需要等下一个区块产生,看这个新区块是连在蓝色后还是红色后。

 

图例里是有个新区块连在了蓝色区块后面,这个时候:

 

链长度(原区块链+蓝色区块+新区块)>链长度(原区块链+红色区块)

 

 

因此,我们选择长度更长的“原区块链+蓝色区块+新区块”作为大家共同维护的主链。

6:记录的安全性:几乎不可能造假】

 

如果有人想对区块链造假,那么他就需要一直抢先生成假的新区块,并广播出去。

 

 

 

这就要求造假者生产新区块的速度,要快于系统中的其他所有用户的生成能力之和。换句话说,造假者需要用户有和其他用户算力之和匹敌的算力。

 

假设这个造假者拥有系统总算力的80%,而剩下用户拥有20%(注:这个假设显然不可能)。如此一来,在造假者广播了一个假的区块后,就有80%的概率先于其他用户生成新区块,然后连在自己之前生成的假区块后。此时造假才有可能成功。

但实际是,每个用户用的算力相比系统总算力都是微不足道的。这就使得造假变得不可能,也使得造假的成本变得无法接受。

 

7:挖矿:比特币的发行】

 

系统为了鼓励大家生成新的区块,于是在开始时就定下规则:

 

每当一个新区块加入主链,这个区块的发行者就会被赠与50BTC

21万个区块后,奖励额度缩水一半;

这也就解释了,为什么BTC的发行上限是:

 

210000\times 50\times1+\frac{1}{2}+\frac{1}{4}+\frac{1}{8}+\ldots=210000\times 50 \times 2=21000000 也就是21000万个。这个机制牢牢限制死了比特币的总量,使得比特币不可能超发,滥发。

 

截至到我下笔时,比特币区块链的长度为504011,所以现在每个区块的奖励时12.5BTC,已发行的比特币数量为16800137.5

 

而目前区块链的生成速度是15分钟左右一个,算下来一天就是100个左右。

 

以上就是我个人对比特币和区块链的理解,希望对大家有所帮助。

 

1、加密货币

 

在一步一步发明发明比特币之前,解释几个直观的认知:

 

我们常说的比特币,是加密货币(Cryptocurrency)的一种,而加密货币实现去中心化的最关键的技术是区块链

 

有些地方可能把加密货币又称为数字货币(或称电子货币),但实际上,加密货币是数字货币的子集,同为子集的还有虚拟货币(如Q币),加密货币的称谓要更加专业

 

加密货币一定具有下列三个特点

 

去中心的清算

分布式的记账

离散化的支付

为了实现这些特点,需要使用到区块链技术。这里的区块链技术是一个很广义的范畴,它包含了密码学,算法等很多不同的内容,其中最精彩的点子,可算是工作量证明 = 共识信用了

 

2、一步一步发明比特币

 

2.1、第一个用户需求 - 账本和电子签名的由来

 

第一个用户需求描述了中心化清算系统几个关键内容的由来,只对区块链感兴趣的读者可以跳过

经济体的蓬勃发展离不开交易。在交易过程中,人们早已发现使用一般等价物(如金银)十分麻烦,发明了纸币(最早的来自中国,北宋时代四川地区的纸币交子的清算体系,是生产力发展的必然产物,最终的目标是提高生产效率),现如今,人们发现,携带现金也很麻烦

 

这是第一个基本用户需求:摆脱现金进行交易带来的不便

 

【解决办法】几个用户使用公共账本记录转账记录,月底结算,账本公开,每个人都可以修改,也就是说可以在上面添加新行(一笔交易),如小明转账给小红10块钱

 

2.1.1、产生的问题1:身份问题

 

在这个账本条目上我们无法确认交易双方小明和小红是否是本人,可能出现伪造(逍遥法外电影中的伪造支票)

 

【解决办法】使用电子签名,即公钥 - 私钥对

 

记住,电子签名被发明的核心目的是希望在电子文档也能有一个类似与现实中个人笔迹的签名,目的一定是:确认写这个签名的人是本人,即身份确认(验证)

 

私钥顾名思义,也叫做密钥,是你本人需要需要妥善保管和保存的

 

Sign(\text{信息},私钥) = \text{电子签名}

 

Sign在这里是一个函数,可以理解为一连串计算(变换),这一连串计算有一个特点,就是输入值只要改变一点点,输出就会完全改变。信息和私钥一起,可以得到一个电子签名。并且这个电子签名不能被轻易的复制到其他信息里,原因是因为每一个电子签名都和这一段信息有关联。

 

Verify(\text{信息},\text{电子签名},\text{公钥}) = \text{/}

 

在进行验证的时候,Verify也是一个函数,输入值是信息,电子签名,公钥,输出是一个True or False,来判断这个电子签名是真的还是假的。

 

这个时候可能有人就要问了,这个电子签名我难道不能试出来吗?很不幸,这是一个有256bit1/0字符串,可能性是 2^{256} ,无穷大。

 

解释完电子签名,我们来看看实例。小明使用自己的私钥加上小明转给小红10块钱的文字通过Sign函数生成一个签名(256位),把签名放在这条转账信息的后面,通过之前的讲解,这个签名就能保证小明已经过目了,并且说:“这真的是我小明,不用怀疑了!肯定是我”

 

直观结果是,我们可以利用密码学的手段,只要有对应人的数字签名,我们保证小明和小红的身份能被100%确认真实

 

但是这个解决方案有一个小漏洞:可以复制同一行信息来伪造交易记录,解决的办法是添加一个这笔交易独有的信息(比如时间戳)

 

2.1.2、产生的问题2:欠债跑路问题

 

如果小明在此时账户上已经没有足够的余额进行支付,就会出现超支问题

 

【解决办法】添加余额记录,此时就不可避免的需要一个中间担保人(国家?信誉机构?银行?)为小明进行余额担保

 

2.1.3、一个大家都遵守的协议

 

此时,现代金融体系的框架基本建立完毕,协议内容是

 

任何人都可以在账本上添加新行

固定时间间隔时用真金白银进行清算

只有有签名的交易是有效的

中间担保的人保证不可超支

此时发现一个很有趣的结论,这个比较严谨的协议有一个特点:如果所有人都按照这个协议来办事,我们可以用任何形式的东西来代替人民币了,换句话说,就是我根本不关心你在账本上添加的新行的交易内容是什么,可以是任何东西

 

利用这个提出需求再解决问题的过程,强化一个认知:货币 = 交易记录(账本),即货币的本质是交易记录,在这背后,有一个前提是,货币的另一个本质是一种共识,我们都信任它有价值的共识

 

2.2、第二个用户需求:账本放在哪里?

 

传统的(现在的)解决方案当时是,使用中心代理-银行,来存放账本

 

既然是第二个用户需求,那肯定就是因为现在的解决方案大家都不满意

 

2.2.1、核心需求:去中心化

 

中心化的痛点大致可以说几点

 

银行效率低下,一笔跨国转账的等待时间较长

胖银行金融体系因部分准备金制度等等方便的规则,能抬升杠杆,产生金融泡沫,进一步诱发金融危机

私有财产神圣不可侵犯是精英与平民,剥削与被剥削者几个世纪以来博弈的风暴中心

当然还有很多没有提到(比如好处,控制经济发展速度,调控供需平衡等),总之,是一种一直饱受诟病的清算方式,此时,中本聪在2009年横空出世,他提出了一种全新的清算方法,并且真正解决了陌生人间信用的问题!接下来就是真正的一步一步的发明比特币了

 

2.2.2、如何实现分布记账(去中心化)

 

为了去中心化,我们可以反其道而行之:每个用户保存账本,分布记账。用户产生一笔交易就将这笔交易广播到到网络上所有的节点上,这样不就完美的去中心化了?

 

 

只要是明眼人都能发现,太天真的,这个方法行不通。若行不通,那就把行不通的原因总结出来

 

遇到问题,总结不可行的原因,寻找解决方案。这是整个人类不断前进的核心最小单位

2.2.2.1、问题核心

 

如何让所有人都同意这个新账本?如何保持这些账本同步?有一笔交易发生时,如何让其他人都听到并相信这一笔交易呢?

 

这些问题才是真正的核心:是否能在协议(办法,规则)中添加几行,找到办法,来决定是否接受交易,并确定交易顺序,使你可以放心的相信,世界上遵守同一协议的所有人手上的账本都和你的一模一样呢?(问题描述值得品读,只有抽象出问题才能更好的去寻找解决方案)

 

2.2.2.2、☆解决方案

 

解决的思路是:哪个账本的计算工作量大,就信任哪个账本。换个角度来说是【让交易欺诈和账本不一的情形的计算力成本高到不能接受甚至完全不可行】

 

1、密码学:哈希函数

 

哈希函数,输入可以是任意信息或者文件,输出是固定长度的比特串。例如256bit1/0串,这个输出叫做这个信息的“哈希值”或者“摘要”(digest)。SHA256就是一个哈希函数

 

密码哈希函数有几个特点

 

特点是输入值稍微变化后,结果就会有很大的不同,完全无法预测不同输入间的规律

逆向计算不可行,只能使用试错法(穷举法),解空间2^{256}

在每一个账本后添加一个特殊数字,对整个列表使用SHA256,我们要求这个特殊数字可以使得输出值的开头有30个零(关于如何确定0的个数问题,在后面部分有详细的说明)

 

根据之前说过SHA256的性质:输入变化输出不可预测,找到这个特殊数字唯一的办法就是穷举。换言之,你很容易就证明了他们进行了海量的计算。而这个特殊数字就叫做工作量证明(proof of work

 

这就意味着,所有的工作量证明就对应了交易列表(账本 Ledger),如果你修改了一个交易,哪怕只是其中一个字符,就会完全改变哈希值,就得重做工作量证明,直观动图如下

 

 

2、区块链 - 信任与共识的基石

 

每一个小账本被称为区块,每一个不同的区块链协议(产生不同的加密货币)都会规定每一个区块的大小(最初比特币为1M

 

账本组成区块,区块构成链表,区块的头包含前一块的哈希值,这就是区块链

 

如此一来,任何人就不能随意修改其中的内容,或者交换顺序。如果你这么做,意味着你需要重新计算所有的特殊数字

 

规定,允许世界上的每一个人建造区块。每一个新建区块的人(找到了这个特殊数字 - SHA256值有30个零)都能获得奖励,对于新建区块的这部分人(矿工)来说

 

没有发送者信息,不需要签名

每一个新区块都会给整个币种增加新的虚拟(加密)货币

新建区块的过程又被称为“挖矿”:需要大量工作量并且可以向整个经济体注入新的货币

挖矿的工作是:接受交易信息,建造区块,把区块广播出去,然后得到新的钱作为奖励

对每个矿工来说,每个区块就像一个小彩票,所有人都在拼命快速猜数字,直到有一个幸运儿找到了一个特殊数字,使得整个区块的哈希值开头有许多个零,就能得到奖励。我记得有一个知乎答主给了一个形象的比喻,区块链就像一个拥有貌美如花女儿(区块)的国王,有很多的青年翘首以盼,而国王的方法是出了一道很难得题目让所有的青年计算(学习改变人生),谁算的快(在计算哈希值过程也可能是运气好)就能抱得美人归

对于想用这个系统来收付款的用户来说,他们不需要收听所有的交易,而只要收听矿工们广播出来的区块,然后更新到自己保存的区块链中就可以了

351%算力-共识攻击

 

这里有一个小漏洞,因为网络的延迟或者有人在篡改区块链等因素,你作为一个收听网络广播的用户,如果同时接受到两条不同的区块链怎么办?其中的交易信息发生了冲突

 

注:区块链本身就是最终的大账本,发生交易的唯一方法就是把你的交易加入到大账本上。具体来说,就是让矿工把你的交易记录加入它新挖到的区块中,并把这个区块链接到区块链上。链表的纽带,当然就是工作量证明

对于上面的问题,用户的解决方案也比较简单:即,只保留最长的,也就是包含的工作量最大的那一条

 

这里有一个Trick,即所谓信任工作量最大不仅仅是出【一道难题】,还通过等待多个区块的产生引入世界上所有矿工之间的博弈(吃瓜群众,坐看大戏,谁厉害我选谁,你们尽管斗)

 

个人观点:区块链的Idea最核心的创新就是从技术上把信任和贪婪画了等号。因为贪婪(希望去竞争建立区块的建立和交易费)所以信任(全网算力越大,用户越放心),这句话甚至带上了些许哲学和传奇的色彩

 

对于用户来说,是这样一种情景

 

其中的原因是,你可以假设Alice希望篡改一个交易信息,那么就意味着Alice需要不断的通过计算维护这个区块链了。也就是说每一次有新的区块链产生,Alice都需要不断的抢到这个彩票,理论上来说,他至少必须拥有全网51%以上的算力才能做到这一点,更多的,随着用户等待区块的增加,这个难度,幂次上升,在7-8个区块链产生后,概率上来讲,就是绝对信任

 

此时

 

我们用数字签名保证了不能伪造交易记录

用区块链及工作量证明保证了不能篡改其中的信息

这两点,就完成了:证明区块链的每一条交易记录都是可信的这一终极目标

 

2.2.3、总结 - 系统可行性分析

 

只需给出一个命题来思考:我们如何才能在这个系统下骗人呢?

 

如果你想篡改一笔不存在的交易记录,那么你必须比所有人都算的快,赢得这个彩票

但所有用户会继续收听其他矿工的广播

所以为了让所有用户继续相信这个伪造的区块

你必须投入自己所有的工作量,不断给篡改后的区块链分叉增添新的区块

记住:根据协议,所有用户会一直信任他所知道的最长的链

是的,你持续的竞争过世界上所有的矿工的概率或者说代价,实在太大了,得不偿失(其实法律也是一样的道理,它强制给违法的人给予惩罚,让违法者付出他们不能承受的代价了保证公平和社会稳定运行)

注意,作为一个用户,你不能立马相信你所听到的最新区块,而是应该等待多几个区块被创建过后,再确认这的确是世界所有人都在使用的区块链

2.3、发明过程中的关键点

 

电子签名 Digital Signatures

公共账本就是货币 The Ledger is the currency

去中心化 Decentralize

工作量证明 Proof of work

区块链 Block Chain

3、比特币技术

 

到这里,已经发明了比特币,解决了去中心化的信任这一难题。只对比特币和区块链是什么这个问题感兴趣的读者,可以停在这里了,希望大家可以在我的叙述中解决一些困惑!鞠躬!

 

针对比特币的一些实现的内在细节,继续在探索和学习的道路上披荆斩棘。新技术,新点子,要拥抱它,使用它,判断它,必须先追根究底了解它。

 

我们知道区块链中记载的核心内容,对于比特币(加密货币)来说就是转账记录。但是,一个概念真正落地成大众可以用的服务,有很多技术上,协议上的细节。接下里的部分主要探讨一些比特币具体实现方面的细节,如网络节点构成,比特币的计算难度系数,比特币总量的由来,比特币一笔交易发生的内部细节等

 

3.1、比特币网络节点的构成

 

比特币网络是一种点对点的数字现金系统(P2P),网络节点中每台机器都彼此对等。P2P网络不存在任何服务端、层级关系或者中心化服务。

 

3.1.1、节点类型与分工

 

一个全功能节点包含上述4个模块【钱包Wallet】【矿工Miner】【完整区块链fullBlock-chain database】【网络路由节点Network routing

 

【网络路由节点】使得节点具有参与验证并传播交易与区块信息,发现监听并维持点对点的链接的能力

【完整区块链】具有此模块的节点被称为:全节点。它能够独自自主的校验所有交易,不需要任何其他信息。

【钱包】比特币的所有权是通过数字密钥、比特币地址和数字签名来确定的,数字密钥实际上并不是存储在网络中,而是由用户生成并存储在一个文件或简单的数据库中,称为钱包。有些节点仅仅保留区块链的一部分,通过一种”简易支付验证“(SPV Simplified Payment Verification)的方法来完成交易

【矿工】挖矿节点以相互竞争的方式创造新的区块。有一些挖矿节点也是全节点,可以独立挖矿;还有一些参与矿池挖矿的节点是轻量级节点,必须依赖矿池服务器维护全节点进行工作

拥有全部四个模块被称之为核心客户端(Bitcoin Core),除了这些主要节点类型外,还有一些服务器及节点运行其他协议,如特殊矿池挖矿协议、轻量级客户端访问协议。

 

下表为扩展比特币网络的不同节点类型

 

3.1.2、扩展比特币网络

 

要在全世界的网络中完成整个的交易,下图描述了一个扩展比特币网络,它包含了多重类型的节点、网关服务器、边缘路由器、钱包客户端以及它们互相连接所需要的各类协议,比特币互相连接的接口一般使用8333端口

 

可以参看这个文章了解Stratum协议,Stratum协议详解

 

3.2、如何控制区块产生速度恒定

 

3.2.1、难度系数

 

我们在发明比特币的过程已经详细说明了工作量证明寻找一个特殊数字使得SHA256函数的输出字符串的前n位是零

 

对于每一种不同的加密货币来说,都有一个值需要在建立货币的时候时候被定义,即每一个新区块在当前全网算力的条件被发现的【平均时间】,这也是难度系数的由来

 

比特币10分钟;以太坊15秒;瑞波币3.5秒;莱特币2.5分钟

抛开代码算法层面来说,实现方法就是通过找前n位是0的方法。从概率角度来说,n值越大,意味找到这个这个数的解范围越小。

 

随着需求0的数目一个一个增加,需要的计算时间将会程指数增长。

 

那么肯定会问,这个难度值如何动态调整?由谁调整?

 

3.2.2、难度调整方式

 

难度的调整实在每个完整节点中自动发生的。如果网络发现区块产生速率比10分钟要快时会增加难度。如果发现比10分钟慢时则降低难度。

 

例如比特币中的是这样定义的:每2016个区块后计算生成它们花费的时长,比上2016014天)调整一次。有人可能会问,如果在这十四天内计算能力暴涨怎么办,其实这个10分钟的区块新建间隔的规定也只是一个估计要求,真实情况下,这个时间会偏离10分钟这个设定值很多,但是这种偏差并不会对整个区块链的运行产生影响

 

3.3、比特币总量的由来

 

我们已经知道,矿工没新建一个区块就可以得到一定数量的比特币作为奖励,最开始,一个区块可以得到50BTC的奖励,之后每210000个区块,奖励减半,直到2140年,所有的比特币将会发放完毕,可以得到公式Total = 210000 \times(50 + 25 + 12.5 + \ldots) = 20999999980 \approx \text{2100}

 

而这个规则不同的竞争币种都可以自由设置。但是因为交易费的存在,挖矿的人还是会有收益,否则无法建立新的区块,那么整个比特币网络就瘫痪了

 

3.4、比特币的交易处理能力

 

3.4.1、现在比特币区块链的区块信息

 

我现在直接从BLOCKCHAIN上,在我写下这句话的时候,最新的区块是情况

 

其中的重量是指的实际存储的大小,这个值和交易协议有关,其实可以忽略。非常幸运的是,这几个区块放佛是专门为讲解这一节而出现的,这可能是天意吧

 

另外插一句,你会发现平均区块建立间隔时间,的确和10分钟这个设计值差距很大吧

 

3.4.2、区块容量

 

比特币从被创建时,或者说源代码中规定了,区块容量是1M。最初设计成1M的原因一方面,防止DOS攻击。另一方面,当年中本聪在创建区块链的时候的容量是32M,但是他通过一个说明为”Clear up“这样毫不起眼的Commit把区块容量改成了1M,为防止区块链体积增长过快,为区块容量这个问题添加了些神秘色彩。好吧,我承认,中本聪就已经非常具有神秘色彩了,是在神秘色彩上添上了些故事

 

通过上表我们知道,1M的容量意味着比特币最大的处理交易数量在约2400486882区块1034.39的大小很接近了),在给出一张时间和每秒交易数量的关系图表(交互表格点击链接)

 

这是一张对数图,纵坐标是每秒交易数量,横坐标是时间。其中,蓝色圆圈的大小代表的是比特币内存池(mempool)的大小(交易在等待矿工处理之前都会暂时存在这里)。

一句话总结,这是一个拥堵的网络,已经重负不堪。

 

再来看一张比特币交易费和区块使用率之间的关系图(交互表格可以点击链接)

 

蓝色的圈大小是Mempool的大小。横坐标是区块容量的使用情况,纵坐标是每一个区块的可以得到的交易费用。

手续费随区块使用率开始增长,甚至出现了4BTC一个区块2400笔交易的情况,意味着挖到这个区块的人通过交易费得到的汇报接近了本身建立区块的回报

 

有一个结论是,扩容后,因为每一个区块的交易承载量增加,矿工的交易费收入肯定会减少。因为,通过上表可以发现,只有当区块使用程度接近95%时候,交易费才有明显的增长

 

再看一张用户执行交易需要等待的时长和区块使用比例间关系的图表(交互图表点击链接)

 

蓝色的圈大小是Mempool的大小。横坐标是区块容量的使用情况,纵坐标是用户平均需要等待的时间,单位是分钟。

通过上面三张表我们可以知道,矿工的计算力是整个区块链信用的基石(记住贪婪=信任),所以对矿工的激励不能少,而对于用户来说,当然希望自己的交易越快速完成越好。

 

对于矿工来说,区块使用率超过95%是一个很好的信号,那意味着我可以拿到更多的奖励。奖励太低,在区块建立奖励越来越少的情况下,安全性(信任)就慢慢的得不到保障。这么说来,这也就变成了一个Trade-off博弈过程

 

分析下来,类似门罗币(menero)实现的根据网络负载来动态调整区块容量的设计似乎很合理

 

3.4.3、比特币扩容之争

 

这是一场复杂的博弈斗争,使用隔离见证增长区块容量,并出现了比特币现金这个新的币种。

 

如果想要了解这里面的很多技术,英文是必须过硬的,因为比特币代码开源,可以随意fork,只要英文功底过硬,阅读白皮书,文档等,这些不同技术的处理方法都是能够学到的

 

3.5、比特币的一笔交易过程中到底发生了什么

 

我们可以确认的是,每一笔都将记录在大账本中,那么我们需要研究的内容,就是区块中交易内容内的具体数据结构

 

3.5.1、交易结构

 

每一个交易块包含的内容如下表所示

 

最后这个值是解锁时间,定义了能被加到区块链里的最早交易时间。大多是时候设为0,表示立马执行。

 

一笔比特币交易是一个含有输入值和输出值的数据结构。该数据结构包含了将一笔资金从初始点(输入值)转移至目标地址(输出值)的代码信息。比特币交易的输入值和输出值与账号或者身份信息无关。可以把它理解为一种被特定秘密信息锁定的一定数量的比特币。只有拥有者或者知道这个秘密信息的人可以解锁

 

3.5.2、交易的输入和输出

 

比特币交易的基本单位是未经使用的一个交易输出,简称UTXOunspent transaction outputs

 

可以把UTXO类比为我们使用的人民币15102050100的面值,对于UTXO来说,它的面值可以是一”聪“的任意倍数(1BTC等于一亿聪)但是这个有着任意面值的”人民币“不能随意打开,还被加上一道类似红包支付口令的密码,只有拥有这个密码的人才可以使用这个UTXOUTXO包含,币值+一段代码(锁,只有有钥匙的人才能打开)

 

被交易消耗的UTXO被称为交易输入,由交易创建的UTXO被称为交易输出

 

3.5.2.1、交易输出

 

不同面值的UTXO是由交易输出来提供的。你可以想象你需要购买一个3.1BTC的物品,你并不能从你的钱包中找到几个UTXO来得到3.1BTC,但是你刚好拥有一个4BTCUTXO,你使用这个UTXO作为付款,那么你需要自己手动构建一个0.9UTXO返还给你自己。

 

一个交易输出包含两个部分

 

一定量的比特币。被命名为“聪”(satoshis

一个锁定脚本。给这个UTXO上锁,保证只有收款人地址的私钥才可以打开

3.5.2.2、交易输入

 

每个交易输入是在构造的一笔交易(使用UTXO),比如你需要支付0.015BTC,钱包会寻找一个0.01BTC0.005BTCUTXO来组成这一笔交易。交易输入中还会包含一个解锁脚本,这是一个签名,可以类比成支付宝红包密码的口令

 

3.5.2.3、交易费

 

交易费 = 求和(所有输入) - 求和(所有输出)

 

这里有一个比较有意思的地方,就是因为找零的输出UTXO是交易的发起这自己构建的,如果很不幸,你忘记了自己构建找零的UTXO,那么这些多余的BTC就会变成矿工的劳务费

 

例如,我需要和小明进行交易,需要购买一个商品,花费0.8BTC,为了确保这笔交易能被更快的处理(添加到大账本上),我要在其中添加一笔交易费,假设0.01BTC(忽略人傻钱多),那就意味着这笔交易会需要我从钱包中找到几个UTXO能组成0.81BTC。但如果我的钱包内找不出这样的UTXO,只有一个1BTCUTXO可用,那么我就需要构建一个0.19BTCUTXO作为找零回到自己的钱包

 

交易费只和交易字段使用的字节大小有关,与参与交易的比特币币值无关。UTXO是有尺寸的,比如某人想支付一笔很大的BTC交易,但是他的钱包中有很多小尺寸的UTXO,如果加入了很多个UTXO,就以为这他的交易会变复杂且尺寸大。

 

3.5.2.4、解锁和锁定脚本

 

在实际实现的时候,这个“支付宝红包口令”被称为脚本,是一种基于逆波兰表示法的基于堆栈的执行语言。具体细节感兴趣的读者可以去比特币的Github研究代码。关于脚本有很多细节上的定义和实现方法,这里限于篇幅不展开描述了

 

3.5.3、矿工费和优先级

 

我们知道,每一笔交易都是广播到区块链上,由矿工决定是不是加入到新区块上的。那么这里就会涉及到一个问题,谁的交易的优先级更高,是先来后到?还是谁给前多谁就能加入到新区块中?

 

在区块容量一节中,有一张图表直观的展示了现在网络中一笔交易的等待时间,其中最长的,也就是30分钟,如果你不是一个超级急性子,很多时候还是可以接受的(毕竟跨国转账1-2个工作日)

 

优先级 = 输入值块龄 * 输出值块龄 / 交易总长度

 

一个交易想成为“较高优先级”,需满足条件:优先值大于57600000,等价于1BTC,年龄为1天,交易的大小为250字节

 

区块中前50KB的字节是保留给“较高优先级”的,其实这一机制也保证了一笔交易不会等待时间无现长。但是我们要知道,内存池(存放待处理交易的位置)中的交易,如果在没有处理后消失,所以钱包必须拥有不断重新广播未被处理交易的功能

 

3.5.4、创币交易 - Coinbase

 

每一个新建立的区块,都会有新的比特币作为奖励被产生,这个交易是一个特殊交易,被称为创币交易(Coinbase奖励)

 

创币交易中不存在解锁脚本(也叫ScriptSig字段),被Coinbase的数据取代,长度最小2字节,最大100字节,除了开始的几个自己以外,矿工可以任意使用Coinbase的其他部分。比如创世区块中,Coinbase的输入中的字段是:The Times 03/Jan/2009 Chancellor on brink of second bailout for banks,是泰晤士日报当天的头版文章标题:财政大臣将再次对银行施以援手。

 

3.6Merkle

 

每个区块中的所有交易,都是用Merkle树来表示的。换句话说,交易的存储数据结构是,Merkle

 

3.6.1、什么是Merkle

 

Merkle树是一种哈希二叉树,它可以用来进行快速查找和检验大规模数据完整性。对于比特币网络来说,使用Merkle树来存储交易信息的目的是为了高效的查找和校验某笔交易的信息是否存在

 

N个数据元素经过加密(使用两次SHA256算法,也称double-SHA256),至多计算2log\_2(N)次就能检查出任意某元素是否在树中

 

3.6.2、构造Merkle

 

假设我们有A B C D四笔交易字段,首先需要把这四个数据Hash化。然后把这些哈细化的数据通过串联相邻叶子节点的哈希值然后哈希化。基本过程如下图所示

 

叶子节点必须是偶数(平衡树),如果遇到奇数的情况,把最后一个节点自身复制一个,凑偶

 

3.6.3Merkle树的效率

 

下表显示了证明区块中存在某笔交易所需转化为Merkle路径的数据量

 

可以发现,即使区块容量达到16MB规模,为证明交易存在的Merkle路径长度增长也极其缓慢(幂指数增长取对数变为线性增长)

 

3.6.4Merkle应用 - 简单支付验证节点(SPV

 

我们知道,每当一笔新的交易产生的时候,我们必须验证这笔交易是否真的存在,在SPV节点中,不保存区块链,仅仅保存区块头。使用认证路径或者Merkle路径来验证交易是否存在于区块中

 

例如,一个SPV节点需要处理一笔支付,它需要验证这笔交易在某个区块中是否存在,才能决定是不是把这笔交易添加到这个区块中,那么它只需要接收少于1KB大小的,有关区块头和Merkle路径的信息,比接收完整区块(大约1MB)大小少了1千倍。简单来说,可以想象,Merkle树类似一个数组(这也是哈希表的最简单表示),下标是区块字段,下标对应数组存储的内容是这笔交易是否存在的值(True or False

 

4、区块链(比特币)与金融

 

因为比特币具有价值,那就必须谈到它和金融的关系。

 

限于篇幅(太长了太可怕了,一个博客写2万字莫不是有病),这部分另起一篇:链接(直接点不会打开新标签),如果对ICO和金融方面感兴趣的读者欢迎移步讨论

 

5、竞争币和其他技术创新

 

所谓竞争币当然是利用区块链技术为即使,仿照比特币的基本协议架构进行的创新后的新币种,或者是新的区块链实现模式。这篇文章围绕什么是区块链展开,这部分的内容请移步(持续更新)如何评估竞争币的价值与新技术创新(直接点不会打开新标签)

 

其中谈到了工作量证明的其他替代手段;到底什么是智能合约;以太坊开发技术栈等

 

6、总结

 

感谢您看到这里,写这篇文章的目的一方面也是回答区块链(比特币)到底是什么这个困扰了自己很久的问题,另一方面,也是因为最近区块链技术非常火,需要一些接地气的科普文

 

比如最近最新的消息称一家保险公司,使用区块链技术来赔偿航班晚点2小时,基于以太坊智能合约第一款落地应用。

 

如果你已经对区块链的实现原理有了初步的认知,就明白这些应用利用了区块链的分布式特点。说到底,并没有贪婪=信任工作量证明核心,只是一种基于云的新型运用,也很有想法,但是和比特币之类就没什么关系了(当然,这是我的个人看法,最近区块链方面的有很多突破性技术,比如侧链,闪电网络等等,太多的新概念,新名词,新技术,对此,也只能不断学习)。

 

但你只需牢记,贪婪=信任,以太坊也是利用以太币这个媒介来实现了合约价值,中本聪用人内核的贪婪来给陌生人之间加上了信任的纽带,这个代价是永远不会变的。换句话说,如何抵抗共识攻击和安全漏洞是一个永远不会消失的议题。

 

一句话来说,万变不离其宗,道生一,一生二,二生三,三生万物。中本聪给了道,是个妙人,但是万物依旧有无穷可能。信任作为一个人类社会一直以来的重要问题(痛点),为了解决它,出现了权威机构进行信任背书(中心化)。建立信任,一定要付出代价,天底下没有免费的午餐,最终这些技术都会回归于一个投入产出的博弈过程(Trade-off),梳理主干,抓住要点,才能游刃有余!